2 回答
TA贡献1878条经验 获得超4个赞
尝试在每次更改时发送实际的输入值,如下所示:
<input
type="text"
id={this.props.selectedEntity}
name={name}
value={property.value}
onChange={e => this.handleUpdateEntity(this.selectedEntity.id, name, e.target.value)}
/>
更改的行是这一行:
onChange={e => this.handleUpdateEntity(this.selectedEntity.id, name, e.target.value)
TA贡献1820条经验 获得超9个赞
因此,经过几天的返工,我发现问题在于正确更改嵌套对象的值。properties在我的代码中,我尝试通过使用计算属性名称访问嵌套对象来更改嵌套对象的值,例如
state[action.payload.id].properties[action.payload.property] = action.payload.value
但是我发现这不会更新状态;或者如果确实如此,它会以不会触发重新渲染的方式进行操作。在许多其他问题中,我看到必须使用扩展变量来返回一个全新的对象,然后触发重新渲染。以这段代码为例:
case ENTITY_UPDATED:
const {id, name, value} = action.payload;
return {
...state,
[id]: {
...state[id],
properties: {
...state[id].properties,
[name]: {
...state[id].properties[name],
value: value
}
}
}
}
这是 redux 需要更改状态来注册更改的方式。我不是 100% 确定为什么会出现这种情况,但确实如此。如果有人对此有充分的把握,请联系并发表评论!
添加回答
举报