首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Reach子程序在状态更改时不更新

Reach子程序在状态更改时不更新
EN

Stack Overflow用户
提问于 2017-11-27 18:41:08
回答 2查看 89关注 0票数 1

我创建了一个代码片段来演示这个问题:

https://codesandbox.io/s/o1v4qxw3yy

本质上,当单击复选框时,checkedValues ( is数组)不会传递给ChildComponent。除非我同时发送另一个变量。如果取消对ParentComponent中的cat行@32的注释,它就会开始工作。

我已经注意到,围绕ChildComponent的阿波罗专案接收新的值实时,但是ChildComponent不会更新,除非进行另一个状态更改。

我不知道我做错了什么。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-11-27 18:47:52

你在改变状态。你应该保持状态不变。创建一个新数组,然后对该数组进行更改。所以转换

代码语言:javascript
复制
let newArray = this.state.checkedValues;

代码语言:javascript
复制
let newArray = [...this.state.checkedValues]; 
票数 2
EN

Stack Overflow用户

发布于 2017-11-27 18:49:29

您需要在父组件的setState()方法的handleChecked()方法中传递一个新的数组,如下所示(可以使用spread操作符)。

代码语言:javascript
复制
handleChecked = (e, id) => {
  console.log(id)
  let newArray = this.state.checkedValues;

  const i = newArray.indexOf(id);
  if (i === -1) newArray.push(id);
  else newArray.splice(i, 1);

  this.setState({ checkedValues: [...newArray] });
  this.setState({ cat: !this.state.cat })
  console.log(`State changed to ${this.state.checkedValues}`);
};
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47517705

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档