应用状态不会跨页面持续存在

时间:2017-08-07 07:53:21

标签: reactjs redux

我在index.js中安装了我的应用程序:

const store = configureStore();

render(
    <Provider store={store}>
        <Router history={browserHistory} routes={routes} />
    </Provider>,
    document.getElementById('root')
);

在我的第一页中,我发布了我的行动:

  submitForm(e) {
    const language = e.target.value;

    this.props.dispatch(addLanguage(language, 'language', '2'));

    this.props.router.push('2');
  }

行动开火:

export const addLanguage = (value, language, page) => {
    return {
        type: types.ADD_LANGUAGE,
        value,
        field: language,
        page,
    };
};

并返回我的reducer中的状态:

const initialState = {
  id: 0,
  language: '',
  session: '',
  values: '',
  accessCode: '',
  age: 0,
  gender: '',
  ethnicity: '',
  drinkOften: '',
  drinkConcern: '',
};

export default function UserDetails(state = initialState, action) {
      switch (action.type) {
        case ADD_LANGUAGE:
          return {
            ...state,
            [action.field]: action.value,
          };

但是,当我在submitForm()中重定向到page2时,状态仍然是默认状态,是否有人知道它为什么不更新?语言属性应该更新。任何帮助非常感谢。

1 个答案:

答案 0 :(得分:1)

如果在提交时您有重定向参数,则需要在运行其他提交代码之前阻止提交表单:

submitForm(e) {
  e.preventDefault();
  const language = e.target.value;

  this.props.dispatch(addLanguage(language, 'language', '2'));

  this.props.router.push('2');
}
相关问题