Javascript 如果我在一个对象中有一个数组,而该对象在一个大数组中,我如何更新React本机状态?
我在州里有这样的事情:Javascript 如果我在一个对象中有一个数组,而该对象在一个大数组中,我如何更新React本机状态?,javascript,reactjs,react-native,state,Javascript,Reactjs,React Native,State,我在州里有这样的事情: Array [ Object { "checked": "", "currentQuantity": 0, "id_in_extras": 206, "id_in_extrasCurrent": 0, "maxQuantity": 1, "minQuantity": 1, "selected": Array [], }, Object { "checked": "", "currentQu
Array [
Object {
"checked": "",
"currentQuantity": 0,
"id_in_extras": 206,
"id_in_extrasCurrent": 0,
"maxQuantity": 1,
"minQuantity": 1,
"selected": Array [],
},
Object {
"checked": "",
"currentQuantity": 0,
"id_in_extras": 576,
"id_in_extrasCurrent": 1,
"maxQuantity": 1,
"minQuantity": 1,
"selected": Array [],
},
Object {
"checked": "",
"currentQuantity": 0,
"id_in_extras": 618,
"id_in_extrasCurrent": 2,
"maxQuantity": 9,
"minQuantity": 0,
"selected": Array [],
},
]
我有一些问题
1)是否有更有效的方法更新指定对象中的变量“checked”?我喜欢这样:
this.setState(prevState => ({
extrasCurrent: prevState.extrasCurrent.map(
obj => (obj.id_in_extrasCurrent === index ? Object.assign(obj, { checked:true }) : obj)
)
}));
2)如何在大数组中插入和删除特定对象的“选定”数组
谢谢大家! 您是否尝试像这样推动数组.state.obj.selected.push()然后调用此.forceUpdate()以使用更新的状态重新渲染组件?一个稍微简单的方法是使用扩展运算符
…
和.map()
中的当前索引i
:
删除:
deleteIndex = i;
const {myList} = this.state;
this.setState({myList: myList.filter((obj, i) => i !== deleteIndex)});
加上:
const {myList} = this.state;
const newObj = {};
this.setState({
myList: [...myList, newObj]
});
不,我没有尝试,但我读到这样更新状态不是一个好的做法,this.state.something=1,您需要使用这个.setState({something:1})…如果不需要,您也不应该强制更新,因为它会反作用于生命周期。您是对的,但您应该调用forceUpdate或setState({})在尝试像这样直接更新状态时重新渲染。state.obj='something'。虽然这不是一个好的做法。
const {myList} = this.state;
const newObj = {};
this.setState({
myList: [...myList, newObj]
});