在 React 中拼接一个数组不断重新渲染

Splice an array in React keeps rerendering

在 update(changeProps) 函数中,我有这样的东西:

 update(changedProps) {
      if (this.person) {
        this.__arr = ['hi', 'hi', 'hi'];
      } else {
        this.__arr = ['bye', 'bye', 'bye', 'bye'];
      }

    if (this.__hello) {
      this.__arr.splice(1, 0, 'hello');
    }

    super.update(changedProps);
  }

说 this.person 是真的,当我点击其他地方并且页面重新呈现时,它变成

this.__arr = ['hi', 'hello', 'hi', 'hi']

然后当它再次重新渲染时:this.__arr = ['hi', 'hello','hello', 'hi', 'hi']

它在每次重新渲染后不断添加到数组中。如果 this.person 不正确,则相同。我该怎么做才能让它只添加一次?

如果我这样做:this.__arr = [...this.__arr, 'hello'],它可以将它添加到末尾,但我想添加一个元素到索引 1

两件事:

  1. 不要变异:
    if (this.__hello) {
      this.__arr = [...this.__arr].splice(1, 0, 'hello');
    }
  1. 您想在每次组件更新时都执行此操作,还是只执行一次?
    if (this.__hello && this.__arr[1] !== 'hello') {
      this.__arr = [...this.__arr].splice(1, 0, 'hello');
    }