簡體   English   中英

類型錯誤:無法讀取反應 js 中未定義的屬性“類型”

[英]TypeError: Cannot read property 'type' of undefined in react js

我正在使用巨型 4.1.1 模板。 我收到回復,但出現此錯誤。 我的代碼如下:authAction.js:

...
export const userSignIn = (user) => {
// const {email, password} = user;
console.log(user)
axios.post(base_url +'login', user)
.then(response=> {
    console.log(response.data)
    return {
        type: SIGNIN_USER,
        payload: user
    };
})    
};

但是當我運行該項目時,出現錯誤TypeError: Cannot read property 'type' of undefined 在此處輸入圖像描述

我相信那是因為你沒有正確地派遣行動。

你用的是thunk嗎?

如果您正在使用 Redux 並進行異步調用,您應該返回 dispatch。


const userSignup = (signupData) => {
  return async (dispatch) => {
    try {
      let res = await axios.post(`${url}/user/`, { user: signupData });
      dispatch({
        type: "FETCH_CURRENT_USER_SUCCESS",
        payload: res.data.user,
      });

      return true;
    } catch (error) {
      console.log(
        "%c CATCH in userSignup ",
        "background: red; color: #bada55",
        error
      );
    }
  };
};

請注意,我在第二行返回一個 function 作為參數的 dispatch 。 然后使用該dispatch (第 4 行)來分派操作的類型和有效負載。

最后,我還從 function userSignUp 返回了一些東西,所以 function userSignUp的調用者得到了一些響應。

如果您不明白以上任何內容,請告訴我。

您可以在此處使用 async + await 獲益。

例如:

export const userSignIn = async (user) => {
    try {
        // const {email, password} = user;
        console.log(user);
        const data = await axios.post(base_url +'login', user);     
        console.log(data);
        return {
            type: SIGNIN_USER,
            payload: user,
        }; 
    } catch (error) {
        console.log(error);
        // return an error action...?
        return {
            type: ERROR,
            payload: error,
        };
    }
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM