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% 確定為什么會出現這種情況,但確實如此。如果有人對此有充分的把握,請聯系并發表評論!
添加回答
舉報