向现有状态添加新值 - React Native

时间:2018-02-21 18:59:12

标签: javascript arrays react-native this state

this.setState ({
      information: [{
                   country: 'country1',
                   place: 'place1'
                   }]
});

这个setState();在每个循环中执行多次a。 问题是每个循环都会覆盖现有值。 我必须改变每个循环'添加'新值?

更新 我为下面的问题找到了一个有效的解决方案:

this.setState (state => ({
                    countries: [...state.countries,
                        {
                            name: child.key.toString(),
                            uri: snapshot.val().toString()
                        }
                    ]
                }));

2 个答案:

答案 0 :(得分:1)

你可以这样做:

        this.setState(state=> ({
            information: {
              country: [...state.information.country, "country1"],
              place:   [...state.information.place, "place1"]
            }
          })
        );
        console.log(this.state.information);

答案 1 :(得分:0)

你无法真正推动,因为它会直接改变状态并且可能导致容易出错的代码,即使你正在重置"之后又是国家。 F.ex,它可能会导致像componentDidUpdate这样的生命周期方法不会触发。

因此,使用ES6,您可以使用扩展运算符。

this.setState(prevState => ({
    information: {
      country: [...state.information.country, "country1"],
      place:   [...state.information.place, "place1"]
    }
  })
);
console.log(this.state.information);