Node.js 我正在尝试从数据库中获取所有文本(tweet像帖子一样)。自然反应

Node.js 我正在尝试从数据库中获取所有文本(tweet像帖子一样)。自然反应,node.js,react-native,react-hooks,Node.js,React Native,React Hooks,我正在尝试从数据库中获取所有文本(像帖子一样的tweet)。但它显示的错误类型错误:undefined不是一个函数(靠近“…posts.map…”) 下面是我的代码: import React, {useEffect, useState} from 'react'; import {ActivityIndicator, Text, View, FlatList} from 'react-native'; import stylesheet from '../src/styles/

我正在尝试从数据库中获取所有文本(像帖子一样的tweet)。但它显示的错误类型错误:undefined不是一个函数(靠近“…posts.map…”)

下面是我的代码:

import React, {useEffect, useState} from 'react';
    import {ActivityIndicator, Text, View, FlatList} from 'react-native';
    import stylesheet from '../src/styles/HomeStyle';
    import AsyncStorage from '@react-native-community/async-storage';

    function FeedScreen() {
      // const [posts, setPosts] = useState('loading');
      const [posts, setPosts] = useState({
        text: '',
        id: '',
      });
      const Boiler = async () => {
        const token = await AsyncStorage.getItem('token');
        fetch('http://192.168.1.5:3000/post', {
          headers: new Headers({
            Authorization: 'Bearer ' + token,
          }),
        })
          .then(res => res.json())
          .then(res => {
            setPosts(res.posts);
          })
          .catch(err => console.log(err));
      };
      useEffect(() => {
        Boiler();
      }, []);

      return (
        <View style={stylesheet.container}>
          {posts.map(post => (
            <Text key={post.id}>{post.text}</Text>
          ))}
        </View>
      );
    }

    export default FeedScreen;
import React,{useffect,useState}来自“React”;
从“react native”导入{ActivityIndicator,Text,View,FlatList};
从“../src/styles/HomeStyle”导入样式表;
从“@react native community/async storage”导入异步存储;
函数FeedScreen(){
//const[posts,setPosts]=useState('loading');
const[posts,setPosts]=useState({
文本:“”,
id:“”,
});
常量锅炉=异步()=>{
const token=await AsyncStorage.getItem('token');
取('http://192.168.1.5:3000/post', {
标题:新标题({
授权:“持票人”+代币,
}),
})
.then(res=>res.json())
。然后(res=>{
设置桩(res.posts);
})
.catch(err=>console.log(err));
};
useffect(()=>{
锅炉();
}, []);
返回(
{posts.map(post=>(
{post.text}
))}
);
}
导出默认FeedScreen;

问题在于posts的初始值是一个post,而不是一个post数组。我还重命名了
Boiler
,因为初始大写字母应该保留给组件或类,并将其移动到
useffect
中:

const FeedScreen = () => {
    const [posts, setPosts] = useState([]); // Here was the issue

    useEffect(() => {
        const boiler = async () => {
            const token = await AsyncStorage.getItem("token");
            fetch("http://192.168.1.5:3000/post", {
                headers: new Headers({
                    Authorization: "Bearer " + token
                })
            })
                .then(res => res.json())
                .then(res => {
                    setPosts(res.posts);
                })
                .catch(err => console.log(err));
        };

        boiler();
    }, []);

    return (
        <View style={stylesheet.container}>
            {posts.map(post => (
                <Text key={post.id}>{post.text}</Text>
            ))}
        </View>
    );
};

export default FeedScreen;
const FeedScreen=()=>{
const[posts,setPosts]=useState([]);//问题就在这里
useffect(()=>{
常量锅炉=异步()=>{
const token=await AsyncStorage.getItem(“token”);
取回(“http://192.168.1.5:3000/post", {
标题:新标题({
授权:“持票人”+代币
})
})
.then(res=>res.json())
。然后(res=>{
设置桩(res.posts);
})
.catch(err=>console.log(err));
};
锅炉();
}, []);
返回(
{posts.map(post=>(
{post.text}
))}
);
};
导出默认FeedScreen;

posts
初始值是一个对象,因此无法映射。也许应该是:
[{text:,id:“}]
或者干脆是
[]