标签: reactjs

在ReactJS中正确修改状态数组

我想在state数组的末尾添加一个元素,这是正确的方法吗?

this.state.arrayvar.push(newelement);
this.setState({arrayvar:this.state.arrayvar});
Run Code Online (Sandbox Code Playgroud)

我担心原地修改阵列push可能会造成麻烦 - 这样安全吗?

制作阵列副本的替代方案,setState这看起来很浪费.

javascript reactjs

365
推荐指数
8
解决办法
37万
查看次数

React JSX:在所选的<select>选项上选择"selected"

<select>菜单的React组件中,我需要selected在反映应用程序状态的选项上设置属性.

render(),optionState从状态所有者传递到SortMenu组件.选项值props从JSON 传入.

render: function() {
  var options = [],
      optionState = this.props.optionState;

  this.props.options.forEach(function(option) {
    var selected = (optionState === option.value) ? ' selected' : '';

    options.push(
      <option value={option.value}{selected}>{option.label}</option>
    );
  });

// pass {options} to the select menu jsx
Run Code Online (Sandbox Code Playgroud)

但是,这会在JSX编译时触发语法错误.

这样做可以消除语法错误,但显然无法解决问题:

var selected = (optionState === option.value) ? 'selected' : 'false';

<option value={option.value} selected={selected}>{option.label}</option>
Run Code Online (Sandbox Code Playgroud)

我也试过这个:

var selected = (optionState === option.value) ? true : false;

<option value={option.value} {selected ? 'selected' …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs

359
推荐指数
8
解决办法
32万
查看次数

从父母调用子方法

我有两个组成部分.

  1. 父组件
  2. 儿童组件

我试图从Parent调用child的方法,我尝试了这种方式,但无法得到结果

class Parent extends Component {
  render() {
    return (
      <Child>
        <button onClick={Child.getAlert()}>Click</button>
      </Child>
      );
    }
  }

class Child extends Component {
  getAlert() {
    alert('clicked');
  }

  render() {
    return (
      <h1 ref="hello">Hello</h1>
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

有没有办法从父母那里调用孩子的方法?

注意:Child和Parent组件位于两个不同的文件中

javascript reactjs

358
推荐指数
14
解决办法
24万
查看次数

为什么React的Virtual DOM概念被认为比脏模型检查更具性能?

我在http://www.youtube.com/watch?v=x7cQ3mrcKaY上看到了React dev的演讲,并且发言人提到模型的脏检查可能很慢.但是,由于虚拟DOM在大多数情况下应该比模型更大,所以虚拟DOM之间的差异实际上并不是很差.

我非常喜欢Virtual DOM的潜在力量(特别是服务器端渲染),但我想知道所有的优点和缺点.

javascript dom reactjs virtual-dom

357
推荐指数
4
解决办法
8万
查看次数

反应"渲染后"代码?

我有一个应用程序,我需要动态设置元素的高度(让我们说"app-content").它需要应用程序的"chrome"的高度并减去它,然后将"app-content"的高度设置为在这些约束内适合100%.这对于vanilla JS,jQuery或Backbone视图来说非常简单,但是我很难弄清楚在React中执行此操作的正确流程是什么?

下面是一个示例组件.我希望能够设置app-content的高度是窗口减去的尺寸为100%ActionBarBalanceBar,但我怎么知道当一切都变得和我在哪里会把计算的东西,在这个阵营类?

/** @jsx React.DOM */
var List = require('../list');
var ActionBar = require('../action-bar');
var BalanceBar = require('../balance-bar');
var Sidebar = require('../sidebar');
var AppBase = React.createClass({
  render: function () {
    return (
      <div className="wrapper">
        <Sidebar />
        <div className="inner-wrapper">
          <ActionBar title="Title Here" />
          <BalanceBar balance={balance} />
          <div className="app-content">
            <List items={items} />
          </div>
        </div>
      </div>
    );
  }
});

module.exports = AppBase;
Run Code Online (Sandbox Code Playgroud)

javascript reactjs

329
推荐指数
9
解决办法
26万
查看次数

什么是mapDispatchToProps?

我正在阅读Redux库的文档,它有这个例子,

除了读取状态之外,容器组件还可以调度操作.以类似的方式,您可以定义一个调用的函数mapDispatchToProps(),该函数接收dispatch()方法并返回您想要注入到表示组件中的回调道具.

这实际上没有任何意义.dispatch()你已经拥有了为什么需要mapDispatchToProps

他们还提供了这个方便的代码示例:

const mapDispatchToProps = (dispatch) => {
  return {
    onTodoClick: (id) => {
      dispatch(toggleTodo(id))
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

有人可以用非专业人士的术语解释这个功能是什么以及为什么它有用?

reactjs redux

329
推荐指数
6
解决办法
21万
查看次数

如何从查询字符串中获取参数值

如何在routes.jsx文件中定义路由,以便__firebase_request_key从服务器重定向后从Twitter的单点登录进程生成的URL中捕获参数值?

http://localhost:8000/#/signin?_k=v9ifuf&__firebase_request_key=blablabla
Run Code Online (Sandbox Code Playgroud)

我尝试使用以下路由配置,但是:redirectParam没有捕获所提到的参数:

<Router>
  <Route path="/" component={Main}>
    <Route path="signin" component={SignIn}>
      <Route path=":redirectParam" component={TwitterSsoButton} />
    </Route>
  </Route>
</Router>
Run Code Online (Sandbox Code Playgroud)

reactjs react-router

323
推荐指数
29
解决办法
46万
查看次数

检测React组件外部的单击

我正在寻找一种方法来检测是否在组件外发生了单击事件,如本文所述.jQuery nearest()用于查看click事件中的目标是否具有dom元素作为其父元素之一.如果匹配,则click事件属于其中一个子项,因此不被视为在组件之外.

所以在我的组件中,我想将一个单击处理程序附加到窗口.当处理程序触发时,我需要将目标与我的组件的dom子项进行比较.

click事件包含"path"之类的属性,它似乎保存了事件所经过的dom路径.我不确定要比较什么或如何最好地遍历它,我认为有人必须已经把它放在一个聪明的实用功能中......不是吗?

javascript dom reactjs

315
推荐指数
20
解决办法
21万
查看次数

如何在React Router v4中推送到历史记录?

在当前版本的React Router(v3)中,我可以接受服务器响应并使用它browserHistory.push来转到相应的响应页面.但是,这在v4中不可用,我不确定处理它的适当方法是什么.

在此示例中,使用Redux,在用户提交表单时调用components/app-product-form.jsthis.props.addProduct(props).当服务器返回成功时,用户将进入购物车页面.

// actions/index.js
export function addProduct(props) {
  return dispatch =>
    axios.post(`${ROOT_URL}/cart`, props, config)
      .then(response => {
        dispatch({ type: types.AUTH_USER });
        localStorage.setItem('token', response.data.token);
        browserHistory.push('/cart'); // no longer in React Router V4
      });
}
Run Code Online (Sandbox Code Playgroud)

如何从React Router v4的功能重定向到Cart页面?

reactjs react-router react-router-v4

315
推荐指数
12
解决办法
41万
查看次数

使用反应路由器V4以编程方式导航

我刚刚react-router从v3 更换为v4.
但我不知道如何以编程方式导航到一个成员函数Component.即在handleClick()功能中我想/path/some/where在处理一些数据后导航到.我曾经这样做过:

import { browserHistory } from 'react-router'
browserHistory.push('/path/some/where')
Run Code Online (Sandbox Code Playgroud)

但我在v4中找不到这样的接口.
如何使用v4导航?

ecmascript-6 reactjs react-router-v4

313
推荐指数
13
解决办法
22万
查看次数