Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在react.js中删除状态中的元素,即使是不可变的更新_Javascript_Reactjs_Ecmascript 6 - Fatal编程技术网

Javascript 在react.js中删除状态中的元素,即使是不可变的更新

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

我的React主应用程序组件中有以下状态:

  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(…)})