我有一些state
看起来像这样:
{
formStatus: {
isFormOK: false,
fields: {
field1: {
status: 'normal',
errorText: '',
value: ''
},
field2: {
status: 'error',
errorText: 'must be an email',
value: ''
},
}
}
}
是的,这是父表单的state
,它有一些表单字段作为其子表单。
假设我想要更新字段的属性,例如:field1.status
,因为上面的state
是一个嵌套对象,我将创建一个新的state
以及更新的保持整个state
不可变的值。
但显然,每次setState
时,由于state
已成为一个全新的对象,它将触发所有子组件的render()
(所有字段项),所以我将所有孩子的实施从stateless component
更改为React.PureComponent
。它似乎处理了这个问题。
我是以正确的方式做事吗?似乎需要很多才能到达那里。
我真的需要更新整个state
吗?
答案 0 :(得分:0)
是的,您必须更新整个state
。如果不更新整个状态并改变现有状态,则父组件将不知道状态已更改且不会重新呈现,并且不会将任何更改传递给子组件。