Javascript 使用react.js立即强制重新渲染(更新状态并更新DOM)
我意识到调用Javascript 使用react.js立即强制重新渲染(更新状态并更新DOM),javascript,reactjs,Javascript,Reactjs,我意识到调用setState不会立即更新this.state,也不会立即调用render并刷新DOM。医生说 setState()不会立即改变this.state,但会创建挂起的状态转换。调用此方法后访问this.state可能会返回现有值 无法保证对setState调用的同步操作,并且可能会对调用进行批处理以提高性能 我希望能够在任何时候强制进行这样的“状态转换”。这似乎应该是一个相当自然的操作,但我在文档中找不到任何提及。有办法吗?您可以使用forceUpdate实现此目的: 如果rende
setState
不会立即更新this.state
,也不会立即调用render
并刷新DOM。医生说
setState()不会立即改变this.state,但会创建挂起的状态转换。调用此方法后访问this.state可能会返回现有值
无法保证对setState调用的同步操作,并且可能会对调用进行批处理以提高性能
我希望能够在任何时候强制进行这样的“状态转换”。这似乎应该是一个相当自然的操作,但我在文档中找不到任何提及。有办法吗?您可以使用
forceUpdate
实现此目的:
如果render()方法读取的不是this.props或
在this.state中,您需要告知React何时需要重新运行render()
通过调用forceUpdate()。如果需要,还需要调用forceUpdate()
你可以直接改变这个状态
您可以将
强制更新
与顶级组件上的钥匙结合使用
let key= 0;
var Hello = React.createClass({
sudoForceUpdate(){
key++;
this.forceUpdate();
},
render: function(){
return <div key={key}>Example</div>;
}
});
let key=0;
var Hello=React.createClass({
sudoForceUpdate(){
key++;
这个.forceUpdate();
},
render:function(){
返回示例;
}
});
通过编辑密钥并强制更新,dom将始终重新加载
下面是一个示例,它突出显示了仅强制编辑和带有关键点更改*的编辑之间的区别
*请注意,这可能是非常糟糕的做法
感谢本·阿尔伯特:
您的用例是什么?你可能对atomic更感兴趣。你想做什么来满足这个要求?我不确定
forceUpdate
是否符合我的要求(可能是这样,但不管怎样,都不清楚。)我认为forceUpdate
的目的是让元素在不设置状态的情况下重新渲染,但是这个渲染仍然可以像任何渲染一样排队。那是对的还是错的?没错forceUpdate
使组件渲染为vDOM元素,但它不会强制将vDOM刷新到实际DOM(不确定如何实现所需)