簡體   English   中英

Function return undefined react native

[英]Function return undefined react native

我需要一個登錄 function 來返回一個令牌,但它總是返回未定義的。

src/api/login.js

That is my function

    import axios from 'axios';

const linkApi = 'http://localhost/api';
const logIn = async (email, password) => {
    const params = new URLSearchParams()
    params.append('email', email)
    params.append('password', password)
    params.append('action', 'LOGIN')
    const config = {    
        headers: {
            'Content-Type': 'application/x-www-form-urlencoded'
        }
    }

    await axios.post(linkApi, params, config)
    .then(response => {
        if(response.data.error === false) {
           return response.data.token;
        } else {
            throw new Error(response.data.message)
        };
    })
}

export default logIn;

我在這個屏幕上使用 function:

src/views/Login/index.js

import React, { Fragment } from "react";
import { Button, Text } from "react-native";
import { useNavigation } from '@react-navigation/native';

import Container from "../../components/Container";
import Logo from "../../components/Logo";
import StyledInput from "../../components/StyledInput";
import ButtonView from "../../components/ButtonView";

import logIn from "../../api/login";


const screen = () => {
    // const navigation = useNavigation();
    const [email, setEmail] = React.useState("");
    const [password, setPassword] = React.useState("");
    const [errorMessage, setErrorMessage] = React.useState("");
    const sendRequest = async () => {
        try {
            const token = await logIn(email, password)
            console.warn(token)
        } catch (erro) {
            setErrorMessage(erro.message)
        }
        
    }
    return (
        <Fragment>
            <Container>
                <Logo />
                <Text style={{ color:"#fff" }}>{errorMessage}</Text>
                <StyledInput 
                    placeholder="Usuario"
                    onChangeText={string => setEmail(string)}
                    value={email}
                    keyboardType="email-address"
                    autoCompleteType="email"
                    placeholder="Digite seu email"
                    placeholderTextColor = "#CCC"
                />
                <StyledInput 
                    placeholder="Senha"
                    secureTextEntry={true}    
                    onChangeText={string => setPassword(string)}
                    value={password}
                    autoCompleteType="password"     
                    placeholder="Digite sua senha"
                    placeholderTextColor = "#CCC"
                />
            </Container>
            <ButtonView>
                <Button 
                    title="Entrar"
                    onPress={sendRequest}
                    color="#fe9f29"
                />
            </ButtonView>

        </Fragment>
    );
};

export default screen;

但是屏幕上的 const 令牌總是返回 undefined 當我在登錄 function 中執行console.warn(response.data.token)時,控制台會正常顯示令牌。 請問,誰能幫幫我?

您需要返回axios.post(...鏈的結果。現在,該 promise 的解析值剛剛被丟棄。

暫無
暫無

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

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