問題描述這么一個場景,2個頁面一個是form表單,一個是table列表現在在form表單中使用reduerdispatch新增方法之后,需要跳轉到table頁面。問題出現的環境背景及自己嘗試過哪些方法一開始的做法是在dispatch后面,調用router的push方法,跳轉到table頁面,但是發現table有一個獲取數據的api會在form頁面的save方法之前調用,導致獲取的數據是form表單提交之前的數據雖然可以使用延遲避免這樣的問題。但是想知道是否有別的方法。另外想到的就是在reducer中調用router的push方法來完成路由的跳轉相關代碼functionformSubmit(e){e.preventDefault()props.form.validateFields((error,value)=>{if(!error){props.saveExpress(value)props.history.push('/express/list')}})}這是調用dispatch之后調用push方法的代碼你期待的結果是什么?實際看到的錯誤信息又是什么?想知道大家正常的邏輯是在哪里調用的查看了antd-pro代碼,使用回調函數解決1、改造saveExpressprops.saveExpress(value,()=>props.history.push('/express/list'))2、修改對應的actionexportconstsaveExpress=(express,callback)=>({type:Actions.SAVE_EXPRESS,express,callback})3、修改對應的epic(由于使用的redux-observable所以會有這個方法)constsaveExpress=action$=>action$.pipe(ofType(Actions['SAVE_EXPRESS']),switchMap(params=>postExpress({...params.express}).then(()=>{params.callback()returnsaveExpressSuccess()})))由此問題可以解決
react-router路由跳轉的問題
DIEA
2019-04-27 22:16:29