我在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时,状态仍然是默认状态,是否有人知道它为什么不更新?语言属性应该更新。任何帮助非常感谢。
答案 0 :(得分:1)
如果在提交时您有重定向参数,则需要在运行其他提交代码之前阻止提交表单:
submitForm(e) {
e.preventDefault();
const language = e.target.value;
this.props.dispatch(addLanguage(language, 'language', '2'));
this.props.router.push('2');
}