Javascript 在设置状态后,React不会重新渲染组件
我有一个奇怪的问题<代码>状态已更新,但未重新渲染组件。当我按下按钮添加Hi All时,必须添加额外的Hi All。但我在屏幕上看不到它们 有趣的是,如果我将Javascript 在设置状态后,React不会重新渲染组件,javascript,reactjs,setstate,Javascript,Reactjs,Setstate,我有一个奇怪的问题状态已更新,但未重新渲染组件。当我按下按钮添加Hi All时,必须添加额外的Hi All。但我在屏幕上看不到它们 有趣的是,如果我将new_row更改为这样的1元素数组 var new_row = [<p key = {key_number + "d"}> Hi all!</p>]; setState对数组执行浅层比较,当您将推入数组时,实例不会更改,因此React不会看到更改。使用concat时,将返回一个新的数组实例 您可以使用排列运算符而不是co
new_row
更改为这样的1元素数组
var new_row = [<p key = {key_number + "d"}> Hi all!</p>];
setState
对数组执行浅层比较,当您将推入数组时,实例不会更改,因此React不会看到更改。使用concat
时,将返回一个新的数组实例
您可以使用排列运算符而不是concat
setState({
key_number,
parag_s: [...parag_s, new_row]
})
不建议在渲染函数内更改状态。它也很容易导致无限循环(更改状态->渲染->更改状态->渲染…)@Cristy,但我不会更改渲染函数中的状态。我用addRow来做这个。在render中,我只读取this.state.ps属性(据我所知,这是React对象的数组)。请你再解释一下好吗?@JamesThank!当你改变状态,但React看不到它时,你能再举几个例子吗?@BlackBeardsetState
是一个复杂的过程,如果你想了解它的工作原理,我只能向你指出它的方向。
setState({
key_number,
parag_s: [...parag_s, new_row]
})