如何设置状态并推送到数组?

时间:2018-09-22 18:04:36

标签: arrays reactjs setstate

这是我的状态:

class table extends Component {
  state = {
    arr: [],
    numofSub: 1
  };

我希望通过从数据库中获取将对象设置为具有设置状态的arr, 提取效果很好,我通过控制台对其进行了记录,但似乎无法将对象推入数组中:

componentWillMount() {
    fetch('/api/items')
      .then(data => data.json())
      .then(inputs => this.setState({ arr: [...inputs] }));

  }

1 个答案:

答案 0 :(得分:1)

当下一个状态取决于上一个状态时,建议使用功能性setstate版本:

componentWillMount() {
    fetch('/api/items')
      .then(data => data.json())
      .then(inputs => this.setState(state => ({ arr: [state.arr,...inputs] })));
  }

关于在setstate之后立即记录更改,您应该在setState's callback内部进行。因为setState is asynchronous并且在您登录state时可能不会更新:

this.setState(state => ({key:value}), () => {
  // this is the callback, its safe to log the updated state
  console.log(this.state);
});