2017-09-13 91 views
0

我打電話給getLocalToken從我的組件讀取字符串的操作從AsyncStorage。以下是我如何調用該函數。動作必須是普通物體。使用自定義中間件進行異步功能。 React Native

componentWillMount() { 
      this.props.getLocalToken(); 
      console.log("CWM", this.props.auth); 
     } 

以下是我的行動

export const getLocalToken = async() => { 
    try { 
     const localToken = await AsyncStorage.getItem('@auth:localToken'); 
     const mobileNumber = await AsyncStorage.getItem('@auth:mobileNumber'); 
    } 
    catch (e) { 
     console.log('Failed to read token', e); 
    } 



    return (dispatch) => { 
     console.log("get token"); 
     dispatch({ 
      type: types.GET_LOCALTOKEN_SUCCESS, 
      payload: { localToken: this.localToken, mobileNumber: this.mobileNumber } 
     }); 
    } 
} 

對於這個代碼,我得到行動必須是純對象。使用自定義中間件進行異步功能。錯誤。

+0

錯誤消息似乎很自我描述,什麼似乎是問題? – Nit

+0

我無法弄清楚,因爲我是Javascript和React Native的新手 –

+0

要更改錯誤消息,默認操作不支持異步操作。如果你想讓你的動作異步,你將需要使用自定義中間件,一個常用的選項是[Redux Thunk](https://github.com/gaearon/redux-thunk)。 – Nit

回答

2

Actions是純JavaScript對象。操作必須具有指示正在執行的操作類型的類型屬性。類型通常應該定義爲字符串常量。請閱讀redux文檔以獲取更多信息。

如果你想要一個異步請求或其他副作用,你必須使用middleware。最流行的是:

所有這些處理方式不同異步請求。 Redux-thunk是初學者友好的,但在我看來很複雜的項目和測試的痛苦。

相關問題