我需要在我的React App的app根目录上调用forceUpdate,或者在我当前所在的组件上调用另一个组件。我知道在当前组件上调用forceUpdate它是this.forceUpdate()
,但我怎么称呼它在另一个组件上?
答案 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,因为始终有办法避免这种情况。