Форма Redux, вызывающая MapStateToProps для каждого элемента Field после обновления с v6.8 до v7.4.2 - PullRequest
0 голосов
/ 12 декабря 2018

Я только что обновил форму Redux для своего проекта React с v6.8 до v7.4.2, и у меня возникают проблемы с вызовом mapStateToProps для каждого элемента поля, имеющегося у меня в форме.

Все мои формы работали нормально под v6.8, но проблема возникла, когда я обновился.Форма в конечном итоге отрисовывается, но если у меня есть большая форма с различной логикой для получения начальных значений, для их рендеринга потребуется много времени.

Я не вижу руководств по переходу с v6 на v7и я не могу найти подобные проблемы здесь.Что мне нужно сделать, чтобы решить эту проблему?

Функция рендеринга в компоненте формы запускается только один раз, а componentDidUpdate также запускается только один раз при загрузке компонента.

Вот как я установил Redux Form в компоненте в упрощенной форме:

function getInitialValues() {
  return { field1: 'value for field 1' };
  // this function can be quite long so if called many times, that would be very time consuming.
}

DocumentComponent = reduxForm({
  form: 'documentForm',
  enableReinitialize: true,
})(DocumentComponent);

function mapStateToProps(state) {
    initialValues = getInitialValues();

    console.log('mapStateToProps called');
    // logs 2 times when there is 1 Field, 11 times when there are 10 Fields and there would be 101 times if there are 100 Fields.

    return {
      initialValues
    };
  } 
}

export default connect(mapStateToProps, actions)(DocumentComponent); 
...