-1

我正在做一个帖子,我得到了信息。但是在我检查以了解获取中是否有任何错误之后,它会崩溃,因为它收到未定义的信息。

错误:

TypeError: undefined is not an object (near '...}).then(function (resp...')

它返回的内容

Object {"accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjoiQWFhYWFzcyIsImlhdCI6MTYxMjM1OTQ0M30.g18clMLcREy5cT6FwConZBpV_NJ69mwP56ddzQAhl50","id": "601aa71368c81c003324ff37"}

获取函数

export function registerNewUser(data) {
    const url = "http://localhost:8080/user/register";
    return axios.post(url, data)
        .then((res) => {
            console.log("fetch in")
            console.log(res.data)
            return res.data
        }).catch(() => {
            console.log("error")
            return {accessToken: null, id: -1}
        })
}

注册按钮

<TouchableOpacity
                    style={styles.loginScreenButton}
                    underlayColor='#fff'
                    onPress={async () => {
                        console.log("Pseudo: " + pseudo + "\nPassword: " + password);
                        setPseudoError(checkPseudo(pseudo));
                        setPasswordError(checkPassword(password));
                        if (checkPseudo(pseudo) === "" && checkPassword(password) === "") {
                            Promise.then(await registerNewUser({
                                username: pseudo,
                                password: password,
                                enrollment: 1
                            })).then(response => {
                                console.log("response: " + response)
                                if (response.id === -1) {
                                    setPseudoError('Invalid pseudo or password')
                                    setPasswordError('Invalid pseudo or password')
                                } else
                                    navigation.navigate('Home', response)
                            })
                        }
                    }
                    }
                >

4

1 回答 1

0

它现在如何为我工作。获取函数

export async function registerNewUser(data) {
    const url = "http://localhost:8080/user/register";
    return axios.post(url, data)
        .then((res) => {
            return res.data
        }).catch(() => {
            return {accessToken: null, id: -1}
        })
}

在按钮内调用 fetch

 <TouchableOpacity
                    style={styles.loginScreenButton}
                    underlayColor='#fff'
                    onPress={() => {
                        console.log("Pseudo: " + pseudo + "\nPassword: " + password);
                        setPseudoError(checkPseudo(pseudo));
                        setPasswordError(checkPassword(password));
                        if (checkPseudo(pseudo) === "" && checkPassword(password) === "") {
                            registerNewUser({
                                username: pseudo,
                                password: password,
                                enrollment: 1
                            }).then(response => {
                                if (response.id === -1) {
                                    setPseudoError('Invalid pseudo or password')
                                    setPasswordError('Invalid pseudo or password')
                                } else
                                    navigation.navigate('Home', response)
                            })
                        }
                    }
                    }
                >

于 2021-02-05T12:23:42.913 回答