Uncaught RangeError: Превышен максимальный размер стека вызовов - ReactJS

Я перебрал все вопросы, подобные моему, но не смог найти ничего полезного для этого случая.

Пожалуйста помоги.

Это моя функция:

renderFields() {
    if (this.props.field) { // some prop

      return (
        <SelectBox
          className="selectbox"
          value={this.state.selectId}
        />
      );
    }
  }

Где используется:

renderAllFields() {
  <div>{this.renderFields()}</div>
}

Это генерирует следующее сообщение:

Uncaught RangeError: Maximum call stack size exceeded

Вероятно, это как-то связано с жизненными циклами в React, но я не уверен.

Например, когда я проверяю:

componentDidUpdate = (prevProps) => {
    console.log('prevProps', prevProps);
    console.log('this.props', this.props);
  };

Они выглядят одинаково.

Благодарю.

РЕДАКТИРОВАТЬ:

render() {
  return (
    <div>
      <Formsy.Form
         ref="form"
         onChange={this.checkForChange}>
        <Grid fluid className="container__seven--holder">
          {this.renderAllFields()}
        </Grid>
     </Formsy.Form>
    </div>
  )
}

checkForChange() получает значения из формы и устанавливает обновленное состояние, используя:

this.setState(updatedState);

Я считаю, что проблема заключается в обновлении при каждом изменении.. даже когда я двигаю мышь, она продолжает обновляться.

1 ответ

Поскольку вы не поделились достаточной информацией или полным кодом компонента, я подозреваю, что причиной может быть ниже

+ Изменить

   <Formsy.Form
     ref="form"
     onChange={this.checkForChange}>
    <Grid fluid className="container__seven--holder">
      {this.renderAllFields()}
    </Grid>
 </Formsy.Form>

к

Ниже будет работать решение, если вы ожидаете событие для функции checkForChange

    <Formsy.Form
     ref="form"
     onChange={e => this.checkForChange(e)}>
    <Grid fluid className="container__seven--holder">
      {this.renderAllFields()}
    </Grid>
 </Formsy.Form>

Ниже будет работать решение, если вы не ожидаете событие для функции checkForChange

    <Formsy.Form
     ref="form"
     onChange={() => this.checkForChange()}>
    <Grid fluid className="container__seven--holder">
      {this.renderAllFields()}
    </Grid>
   </Formsy.Form>
Другие вопросы по тегам