Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.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 以不可变的方式更新子组件中父组件的状态_Javascript_Reactjs_Typescript_Ecmascript 6_Setstate - Fatal编程技术网

Javascript 以不可变的方式更新子组件中父组件的状态

Javascript 以不可变的方式更新子组件中父组件的状态,javascript,reactjs,typescript,ecmascript-6,setstate,Javascript,Reactjs,Typescript,Ecmascript 6,Setstate,我有一个具有以下属性的对象数组 columns = [ {Header: ƒ, Cell: ƒ, sortable: false, show: true}, {Header: ƒ, accessor: "firstName", sortable: false, show: true}, {Header: ƒ, accessor: "status", sortable: false, show: true},

我有一个具有以下属性的对象数组

columns = [
           {Header: ƒ, Cell: ƒ, sortable: false, show: true},
           {Header: ƒ, accessor: "firstName", sortable: false, show: true},
           {Header: ƒ, accessor: "status", sortable: false, show: true},
           {Header: ƒ, accessor: "visits", sortable: false, show: true}
          ]
我将这个对象数组发送给子组件,还有一个用于从子组件设置父组件状态的方法

父组件 在第一个选项中,我希望状态应更新为:

[
           {Header: ƒ, Cell: ƒ, sortable: false, show: true},
           {Header: ƒ, accessor: "firstName", sortable: false, show: false},
           {Header: ƒ, accessor: "status", sortable: false, show:false},
           {Header: ƒ, accessor: "visits", sortable: false, show: true}
]

我无法在“submitSelection()”内正确映射索引。有没有比这里更干净的逻辑


非常感谢您的帮助

您可以通过以下方式编写您的
提交选择
函数,使其更干净:

  values = ['firstName','status'];

  submitSelection = () => {
    const updatedObj = this.props.columns.map(o => 
      values.some(val => val === o.accessor) 
      ? { ...o, show: !o.show } 
      : {...o}
    );
    this.props.handleSetState(updatedObj);
  };

李佳娜非常感谢你能帮我查一下吗
[
           {Header: ƒ, Cell: ƒ, sortable: false, show: true},
           {Header: ƒ, accessor: "firstName", sortable: false, show: false},
           {Header: ƒ, accessor: "status", sortable: false, show:false},
           {Header: ƒ, accessor: "visits", sortable: false, show: true}
]

  values = ['firstName','status'];

  submitSelection = () => {
    const updatedObj = this.props.columns.map(o => 
      values.some(val => val === o.accessor) 
      ? { ...o, show: !o.show } 
      : {...o}
    );
    this.props.handleSetState(updatedObj);
  };