辅助方法无法使用setState设置增量ID

时间:2018-02-11 16:16:01

标签: javascript reactjs ecmascript-6

我的组件中有这个。

addGift = () => {
    const { gifts } = this.state

    this.setState({
      gifts: [
        ...gifts,
        { id: max_number(...gifts.map(gift => gift.id)) + 1 }
      ]
    })
  }

max_number是一个小帮手

export const max_number = (arr = []) => {
  return arr.length > 0 ? Math.max(...arr) : 0
}

每当我触发addGift时,我都会继续{id: 1},我希望它应该使用max_number帮助器来增加,但它没有。

2 个答案:

答案 0 :(得分:1)

max_number函数采用数组,因此在调用时不应使用扩展语法:

{ id: max_number(gifts.map(gift => gift.id)) + 1 }

答案 1 :(得分:0)

max_number接受无限数量的参数而不是数组,你可以像这样使用addGrid函数

addGift = () => {
    const { gifts } = this.state

    this.setState({
      gifts: [
        ...gifts,
        { id: max_number(gifts.map(gift => gift.id)) + 1 }
      ]
    })
  }

或者您可以在max_number函数中使用扩展运算符,F.ex。

export const max_number = (...arr) => {
  return arr.length > 0 ? Math.max(...arr) : 0
}