Не удается обновить во время существующего перехода состояния при обновлении состояния? - PullRequest
0 голосов
/ 09 сентября 2018
this.state = {
  filterData: [{
    attribute: '-1',
    filter: '-1',
    value: ''
  }],
}


_createFilterUI(dataSourceColumns) {
  if (this.state.dataSourceIndex == -1)
    return <div > Kindly first select Data Source. < /div>
  let dataSource = this.state.datasourcelist,
    dataType = '';
  let filterData = this.state.filterData
  let previousfilters = this.state.d3line.chartDataSo.filterDefintions;
  console.log(filterData.concat(previousfilters));


  this.setState({
    filterData: filterData.concat(previousfilters)
  })


  return this.state.filterData && this.state.filterData.map((el, i) => {

    if (el.attribute != -1) {
      dataType = dataSource[this.state.dataSourceIndex].columnDescription[el.attribute].JAVA_DATA_TYPE;
    }
    return (
      <div>
        { some content }
      </div>)
    )
  })
}

filterData является частью моего штата. Когда я пытаюсь обновить состояние filterData с помощью filterData.concat(previousfilters)

Не обновляется, и я получаю Cannot update during an existing state transition ошибку после сохранения setState

Пожалуйста, кто-нибудь, подскажите, как обновить состояние filterdata и объясните, что я делаю не так.

Мне не удается правильно обновить состояние после того, как я его утешил.

1 Ответ

0 голосов
/ 09 сентября 2018

Я думаю, что здесь есть две проблемы.Я не могу полностью сказать, потому что не хватает показанного кода, но я собираюсь догадаться, что вы вызываете _createFilterUI из метода render или componentWillUpdate.Вы можете вызывать другие методы из этих методов, но вам не разрешается вызывать setState во время них.

Кроме того, setState не обновляет автоматически компонент , поэтому в вашемВ приведенном выше фрагменте вы не можете рассчитывать на новое состояние сразу после вызова setState.Вы должны будете выполнить остальную часть своей функции в обратном вызове, который вы можете предоставить setState, или в другой точке жизненного цикла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...