2017-08-07 36 views
0

我安装在index.js我的应用程序:应用程序状态不跨网页

const store = configureStore(); 

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

在我的第一页我disptach我的行动:

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, 
    }; 
}; 

它返回我的减速器中的状态:

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

如果提交你有你需要避免提交表单之前运行的其他代码提交GET参数重定向:

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

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

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

感谢,你能告诉我,我该怎么办呢? – Bomber

+0

@轰炸机U可以通过添加e.preventDefault()来停止默认动作。 –

+0

@Bomber替换我的submitForm代码,并尝试提交 –