Uncaught RangeError: Превышен максимальный размер стека вызовов - ReactJS - PullRequest
0 голосов
/ 26 декабря 2018

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

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

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

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 Ответ

0 голосов
/ 26 декабря 2018

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

Изменить

   <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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...