Node.js 我正在尝试从数据库中获取所有文本(tweet像帖子一样)。自然反应
我正在尝试从数据库中获取所有文本(像帖子一样的tweet)。但它显示的错误类型错误:undefined不是一个函数(靠近“…posts.map…”) 下面是我的代码: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/
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:“}]
或者干脆是[]
?