Нужно ли монтировать redux-form к ключу формы в корне моего состояния?

На начальной странице говорится:

import { createStore, combineReducers } from 'redux'
import { reducer as formReducer } from 'redux-form'

const reducers = {
  // ... your other reducers here ...
  form: formReducer     // <---- Mounted at 'form'
}
const reducer = combineReducers(reducers)
const store = createStore(reducer)

Но в документации reduxForm() говорится:

форма: строка [обязательно]

имя вашей формы и ключ к тому, где состояние вашей формы будет смонтировано под редюсером redux-form

Я использую пример простой формы. У меня есть этот код:

var reduxFormReducer = reduxForm({
  formKey: 'personal'  // a unique identifier for this form
})(SimpleForm);

var reducer = combineReducers({
  formKey: reduxFormReducer
});

Но он показывает эту ошибку:

Предупреждение: неверный тип реквизита: требуемый реквизит form не был указан в Form(SimpleForm). в форме (SimpleForm) (созданный Connect (Form (SimpleForm)))

Я пробовал это:

var reduxFormReducer = reduxForm({
  form: 'formKey'  // a unique identifier for this form
})(SimpleForm);

var reducer = combineReducers({
  formKey: reduxFormReducer
});

Это не показывает эту ошибку, но поля редактирования пусты и не могут быть изменены.


person AlexStack    schedule 02.09.2016    source источник


Ответы (1)


Надеюсь, вы пропустили в редукторе, пожалуйста, используйте имя ключа как form

var reduxFormReducer = reduxForm({
  form: 'formKey'  // a unique identifier for this form
})(SimpleForm);

var reducer = combineReducers({
  form: reduxFormReducer // <- change formKey to form here 
});

см.: http://redux-form.com/6.0.2/docs/GettingStarted.md/

Обновление:

Редуктор формы. Должен быть указан для подключения к вашему состоянию Redux в form.

Если вам абсолютно необходимо смонтировать его куда-нибудь, кроме form, вы можете предоставить функцию getFormState(state) декоратору reduxForm(), чтобы получить срез состояния Redux, в котором вы смонтировали редьюсер redux-form.

person Raj Adroit    schedule 02.09.2016
comment
это работает, но вопрос в том, должен ли я должен использовать form? Вместо этого я хочу использовать что-то другое, например *state.foo. - person AlexStack; 02.09.2016
comment
@AlexStack, пожалуйста, проверьте обновленный ответ, это было бы полезно? - person Raj Adroit; 02.09.2016