我在React组件中有一个object类型的属性。使用setState
我正在尝试修改此属性。但是在里面给这个属性赋一个新值
setState
无效。请在下面找到我的示例代码。
export const Test = ({
objectArray,
changeState = function (newoOjectArray) {
this.setState({objectArray: newoOjectArray});
console.log(JSON.stringify(objectArray)); // Doesn't reflect changes. Prints old objectArray
}
}) =>
(
<div>Some data</div>
)
某些用户操作会触发对changeState(newoOjectArray)
的调用。我在setState
函数内调用了changeState
调用setState
后,如果我将objectArray
变量打印到控制台,它仍然保留旧值。
如何setState
为objectArray
分配新值
感谢
修改
我知道setState
是异步的,对属性的更新可能会在延迟后反映出来。
但是在上面的示例代码的情况下,即使在延迟之后,objectArray变量也永远不会更新
我已经实现了componentWillReceiveProps(nextProps)
方法并且它被调用但它总是接收旧的objectArray。
所以我不认为这个问题与setState
异步有关。
EDIT2
我创建了一个示例应用程序来演示我面临的问题。示例应用程序在本地运行良好,我可以重现该问题。
但我无法在codepen
中使用相同的示例应用代码。它给了我一些&#39; unexpected token
&#39;错误。
但我希望看看这些代码能更好地理解我的问题。
代码基于现有的应用程序结构。
Codepen example here
在代码中,我有一个Parent
和两个孩子Child1
和Child2
。
在Parent
中,我定义了一个函数changeState
,我将其作为属性传递给Child1
。
并且Child2
我正在通过name
&#39;来自Parent
的财产
点击'Change Name
&#39; Child1
中的按钮会触发changeState
Parent
函数的调用。
Parent
中姓名的初始值为&#39; Robert
&#39;。从changeState
调用Child1
,新名称值为&#39; Tom
&#39;。
但是在changeState
函数中,将新值分配给&#39; name
&#39;使用setState
无效。我正在调用一个函数来打印&#39; name
&#39;
在setState
完成后,它会打印旧名称值,而不是setState
中分配的新名称。