Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/380.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.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数组内部状态不为';不变 scriptWriter=(数据:ItemType)=>{ 设id=data.id console.log(this.state.items.map(el=>el.id==id?数据:el))/#1 这是我的国家({ items:this.state.items.map(el=>el.id==id?数据:el) }) console.log(this.state.items)/#2 }_Javascript_Reactjs_Typescript - Fatal编程技术网

Javascript React数组内部状态不为';不变 scriptWriter=(数据:ItemType)=>{ 设id=data.id console.log(this.state.items.map(el=>el.id==id?数据:el))/#1 这是我的国家({ items:this.state.items.map(el=>el.id==id?数据:el) }) console.log(this.state.items)/#2 }

Javascript React数组内部状态不为';不变 scriptWriter=(数据:ItemType)=>{ 设id=data.id console.log(this.state.items.map(el=>el.id==id?数据:el))/#1 这是我的国家({ items:this.state.items.map(el=>el.id==id?数据:el) }) console.log(this.state.items)/#2 },javascript,reactjs,typescript,Javascript,Reactjs,Typescript,这是我的密码。我正在尝试更改状态数组中的元素。但是#1代码的结果和#2的结果是不同的。我想将此.state.item更改为#1结果。有什么解决方案吗?这是因为setState本质上是异步的,请使用回调来记录状态值,该值将在状态更新后调用: this.setState({ items: this.state.items.map(el => el.id === id ? data : el) }, () => console.log(this.state.items)

这是我的密码。我正在尝试更改状态数组中的元素。但是
#1
代码的结果和
#2
的结果是不同的。我想将
此.state.item
更改为
#1
结果。有什么解决方案吗?

这是因为setState本质上是异步的,请使用回调来记录状态值,该值将在状态更新后调用:

this.setState({
    items: this.state.items.map(el => el.id === id ? data : el)
  },
  () =>  console.log(this.state.items)
);

状态更改是异步的,您不能
控制台。在下一行记录
并查看更改