0

我有一個關於從reducer調用動作或者僅僅是重定向到另一個場景的問題。我想重定向到一個場景後,用戶在成功地登錄我有我的action.js其使用「終極版的API中間件」模塊:React本地路由器Flux(react-native-router-flux) - 在reducer中調用動作

action.js

export const LOGIN_REQUEST = 'LOGIN_REQUEST'; 
export const LOGIN_SUCCESSFUL = 'LOGIN_SUCCESSFUL'; 
export const LOGIN_FAILED = 'LOGIN_FAILED'; 

export function login(data) { 
    return { 
    [CALL_API]: { 
     endpoint: API_ROOT + 'login', 
     method: 'POST', 
     types: [LOGIN_REQUEST, LOGIN_SUCCESSFUL, LOGIN_FAILED], 
     body: JSON.stringify(data) 
    } 
    } 
} 

reducer.js

function login(state = initalstate, action){ 

    switch (action.type) { 

    case LOGIN_REQUEST: 

     return { 
      ...state, 
      isFetching: true 
     }; 

    case LOGIN_FAILED: 

     return { 
      ...state, 
      error: action.error, 
      isFetching: false 
     }; 

    case LOGIN_SUCCESSFUL: 

     return { 
      ...state, 
      error: null, 
      isFetching: false 
     }; 

     break; 

    default: 
     return state; 

    } 

} 

現在,如果我得到LOGIN_SUCCESSFUL我想打電話給像ActionsMY_SCENE_KEY動作重定向到下一個屏幕。當我在reducer中調用Actions時,會出現一些錯誤,這可能是錯誤的方法。

回答

0

你不應該觸發Reducer的動作。 你有2個otpions:

1)當你的用戶成功登錄,就可以反映在您的國家:

case LOGIN_SUCCESSFUL: 

    return { 
     ...state, 
     error: null, 
     isFetching: false, 
     loggedIn: true, 
    }; 

在你連接到你的狀態,集裝箱通過這種方式,你可以檢查這個狀態。記錄值並通過調度您的轉換操作來相應地觸發轉換。

2)當您處理登錄API響應時,您可以簡單地調用您的轉場場景動作重定向到下一個屏幕(可以將其與成功的登錄動作調度結合使用)。

相關問題