【问题标题】:Function will not return函数不会返回
【发布时间】:2020-06-28 00:28:38
【问题描述】:

我希望你能帮助我。此函数 loadUserData() 不希望执行任何返回。

谁能告诉我我做错了什么?


    import axios from 'axios'
    import { Alert, AsyncStorage } from 'react-native'

    export const UPDATE_USERID = 'UPDATE_USERID'


    export const loadUserData = (uid) => {
        console.log()
        return async (dispatch, getState) => {
            try {
                dispatch({type: UPDATE_USERID, payload: uid})
                const { userid } = getState().auth
                console.log("Userid:")
                console.log(userid)

            }
            catch(error){
                console.log(error)
            }
        }
    }

在这个函数中使用了loadUserData。

export const signin = () => {
    return async (dispatch, getState) => {
        try {
            const { email, password } = getState().auth
            console.log("Email: " + email + " Password: " + password)
            console.log(ApiBaseUrl + "/users/login")
            axios.post("http://xxxxxxxxxx/users/login",
                {
                    email: email,
                    password: password
                },
                {
                }
            ).then((response) => {
                if (response.status == 200) {
                    let data = JSON.parse(JSON.stringify(response))
                    dispatch({ type: UPDATE_JAVAWEBTOKEN, payload: response.data.user.token })
                    //Here 
                    loadUserData(response.data.user._id)
                }

            })

        }
        catch (error) {
        console.log(error)
        }
    }

}

如果您能帮我解决我的问题,那就太好了。

最好的 尼克

【问题讨论】:

  • 好吧,尼克到底是哪个函数,你想返回什么?您在这里有两个函数,第二个函数返回一个不返回任何内容的函数。如果那是你想要返回的东西,那就返回一些东西。
  • @SecondSon 第二个函数应该将 USERID 保存在 Redux 中。在其他功能中它的工作方式相同......我问自己为什么它在这里不起作用。
  • 您能说明loadUserData 的使用位置吗?
  • 嗨,@khan 我将其发布为答案 :)
  • @NickLenke,请编辑您的问题以包含任何更新,而不是将其作为答案发布。

标签: javascript react-native redux


【解决方案1】:

loadUserData 返回一个很明显从未调用过的函数。一种快速解决方法是将其称为loadUserData(response.data.user._id)(dispatch, getState)。那么你仍然有捕捉异常的问题。你有你的 try-catch 块,但里面只有一个你没有等待的承诺。这种情况下的catch块永远不会被执行,除非你把await放在axios.post前面

【讨论】:

    猜你喜欢
    • 2013-03-25
    • 2011-02-14
    • 1970-01-01
    • 2013-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多