Javascript 在react.js中删除状态中的元素,即使是不可变的更新
我的React主应用程序组件中有以下状态:Javascript 在react.js中删除状态中的元素,即使是不可变的更新,javascript,reactjs,ecmascript-6,Javascript,Reactjs,Ecmascript 6,我的React主应用程序组件中有以下状态: state = { tasks : [], tags : [], modals : { deleteModal : false, editmodal : false, addmodal : false }, globals : { deleteid : null, deleteIdx : null, edittasktext
state = {
tasks : [],
tags : [],
modals : {
deleteModal : false,
editmodal : false,
addmodal : false
},
globals : {
deleteid : null,
deleteIdx : null,
edittasktext : null,
edittaskid : null
}
}
当我打开一个模式时,状态会在下面的函数中编辑,如下所示
_handleEditModalOpen = ( id , text ) => {
let modals = this.state.modals,
globals = this.state.globals;
this.setState({
modals : {
...modals,
editmodal : true
},
globals : {
...globals,
edittaskid : id,
edittasktext : text
}
});
}
正如您所看到的,我在上面编辑的东西中有一件是全局的,但是当我在react debugger中检查我的状态时,我看到edittaskid
和edittasktext
被删除,正如您在下面所看到的,这是在上述函数运行后状态的表现
请参见下面的屏幕截图,说明应用程序加载的时间:
请参见下面的屏幕截图,说明应用程序模式何时打开,功能何时运行:
为什么我所在州的元素会被清除 是否在某处声明了
globals
变量,或者您忘记放置let
?@Vencovsky没有globlas
。抱歉,没有typo@Vencovsky没关系:)modals之前使用的let
也包括全局变量..this.state.modal.editmodal是真的吗?如果是,请检查id和文本是否正确,然后尝试在回调中控制台this.state.globals.edittaskid和this.state.globals.edittasktext,如this.setState({…},()=>{console.log(…)})
是否在某个地方声明了globals
变量,或者您忘记放置let
?@Vencovsky没有globlas
。抱歉,没有typo@Vencovsky没关系:)modals之前使用的let
也包括全局变量..this.state.modal.editmodal是真的吗?如果是,请检查id和文本是否正确,然后尝试在回调中控制台this.state.globals.edittaskid和this.state.globals.edittasktext,如this.setState({…},()=>{console.log(…)})