首页 > 解决方案 > 无法用 api [React Native] 填充我的状态

问题描述

我想用我的 api 数据(字符)填充我的状态但我什至无法检索 json 上的数据(console.log(json))有人有帮助我的想法吗?

import 'react-native-gesture-handler';

import React, {useState,useEffect} from 'react';
import {
    Text,
    View,


} from 'react-native';
export default HomeScreen = ({navigation}) => {

    const [Characters, setCharacters] = useState([

    ])
    const getCharacters = async () => {

        let response = await fetch(
            'https://www.dnd5eapi.co/api/'
        );
        let json = await response.json();


        if (json.Characters) {
            setCharacters(json.Characters);

        }
        console.log(Characters)
    }

我的 console.log 甚至没有出现 在此处输入图像描述

使用另一个不起作用的 api 更新代码:

    const getCharacters = async () => {

        let response = await fetch(
            'https://reactnative.dev/movies.json'
        );
        let json = await response.json();


        if (json['Characters']) {
            setCharacters(json.movies);

        }
        console.log(Characters)
    }

标签: reactjsapireact-nativefetch

解决方案


if (json.Characters) {
    setCharacters(json.Characters);
}

API 的响应不包含Characters密钥,因此这会将您的Characters状态设置为undefined. 提供输出的一种解决方案是仅设置Characters响应中的全部数据:

if (json.Characters) {
    setCharacters(json);
}

这将为您提供一些要显示的数据,但可能不是您真正想要的数据。您很可能需要向不同的端点发出请求以获取所需的数据。


推荐阅读