如何在React中的根元素上调用forceUpdate?

时间:2016-08-28 23:21:24

标签: reactjs components

我需要在我的React App的app根目录上调用forceUpdate,或者在我当前所在的组件上调用另一个组件。我知道在当前组件上调用forceUpdate它是this.forceUpdate(),但我怎么称呼它在另一个组件上?

2 个答案:

答案 0 :(得分:0)

您可以将this.forceUpdate()功能访问道具传递给子组件

<强> root.js

var Root = React.createClass({
  render: function() {
    return (
      <UpdateComponent
        rootUpdate={this.forceUpdate.bind(this)}
      />
    );
  }
});

然后,只要您需要强制更新根目录,就可以在UpdateComponent中访问调用this.props.rootUpdate()

答案 1 :(得分:0)

forceUpdate是一个更糟糕的情况,应该避免,因为它偏离了React的做事方式。

  

通常你应该尽量避免使用forceUpdate(),只能在render()中读取this.props和this.state。这使您的组件“纯粹”,您的应用程序更简单,更高效。

更改要重新渲染的元素的键将起作用。通过状态设置元素上的键道具,然后当您想要更新设置状态以获得新键时。

<Element key={this.state.key} /> 

然后发生更改并重置密钥

this.setState({ key: Math.random() });

我想要注意,这将替换密钥正在更改的元素。总是不鼓励使用forceUpdate,因为始终有办法避免这种情况。