反应如何将新元素附加到状态?

时间:2016-11-25 20:13:06

标签: javascript jquery reactjs

我想将新元素追加到我的产品状态,目前正在使用.concat,但它会添加到数组的末尾,但我需要添加到开头。

var Body = React.createClass({
  getInitialState() {
    return { products: [] }
  },

  handleSubmit(product) {
    var newState = this.state.products.concat(product);

    this.setState({ products: newState });
  },
});

试图使用this.state.products.unshift(product),但它给了我Uncaught TypeError: this.state.tickets.unshift is not a function,它可能会返回数组的长度而不是它自己。

1 个答案:

答案 0 :(得分:0)

只需更改连接的顺序即可。如果“product”是单个项目而不是数组,那么请执行以下操作:

int distance(unsigned a, unsigned b)
{ // Distance from `a` to `b`
  unsigned d = (b + 8 - a) % 8;
  // `d` is CCW distance from `a` to `b`
  return d <= 4 ? d : (int) d - 8;
}

如果“product”已经是一个数组,只需这样:

var newState = [product].concat(this.state.products);