Начальные значения для рендеринга Redux-формы только при жестком кодировании, но не из реквизитов / состояния

#reactjs #react-redux #redux-form

#reactjs #реагировать-redux #redux-форма

Вопрос:

В моей redux-форме я пытаюсь инициализировать форму данными, которые я получаю от API и передаю в компонент через props. Прямо сейчас моя функция инициализации может принимать и отображать строки (т. Е., если я передаю "questionText: "some text" , это заполняет текст вопроса <Field>) . Однако, когда я передаю состояние реквизитов, которые я принимаю, ничего не заполняется.

Когда я это делаю "questionText: this.state.offerContent.name" , в <Field> ничего не отображается.

Я пытаюсь выяснить, почему это происходит. Вот некоторый соответствующий код.

    constructor(props) {
      super(props)
      this.state = {
        offerContent: ''
      }

  componentDidMount(){
      this.props.offerCallBack()
        .then(c => {
             this.setState({
               offerContent: c,
             });
        })
        .catch(error => {
          console.log(error);
         });
         this.handleInitialize();

        }

        handleInitialize() {
          const initData = {
            "questionText": this.props.offerContent.name,
          };

          this.props.initialize(initData);
        }

              <Field
                  name="questionText"
                  type="text"
                  id="questionText"
                  component={renderField}
                  label="Question Text"
              />

const form = reduxForm({
  form: 'offerquestion',
  enableReinitialize: true

});

function mapStateToProps(state) {
  return {
    offerContent: state.offerContent
}
}

export default connect(mapStateToProps)(form(OfferExample));
  

** это то, что происходит, когда я console.log(this.props) в этом компоненте OfferExample:
введите описание изображения здесь

Комментарии:

1. Разве ваш метод mapStateToProps не должен содержать offerContent: state.offerContent … или какую-то подобную строку?

2. это то, что я пробовал, но тогда он все еще не заполняется: ( @G_S

3. Но в опубликованном вами коде нет этой строки.

4. Я только что попробовал это локально. Я обновлю свой код в своем вопросе, чтобы включить его

5. Можете ли вы проверить это в компоненте offerexample.props ?