我正在学习RN,并具有以下代码,可从API提取单个帖子,一旦完全提取并将其设置为发布,我就使用useState钩子设置我的帖子。现在如何从JSX访问此帖子中的数据? (例如post.title,post.id),因为我无法使用Flatlist数据道具。也欢迎对我的代码实现进行任何更正
import React, { useState, useEffect, useCallback } from "react";
import { View, StyleSheet, Text } from "react-native";
import moment from "moment";
const SinglePostScreen = props => {
const [isLoading, setIsLoading] = useState(true);
const [post, setPost] = useState();
const fetchSinglePost = async () => {
let post_id = props.navigation.getParam("post_id");
const response = await fetch(
`https://kriss.io/wp-json/wp/v2/posts?_embed&include=${post_id}`
);
const post = await response.json();
setPost(post);
setIsLoading(false);
};
useEffect(
useCallback(() => {
fetchSinglePost();
}),
[setPost]
);
return (
<View>
<Text>This is a post of id {post.id}</Text>
I want to access the data from here but how do i pass it to here. I cant use the Flatlist
data property
</View>
);
};
const styles = StyleSheet.create({});
export default SinglePostScreen;
答案 0 :(得分:1)
您的api返回一个数组,因此在使用“ post”变量时,您应该添加从数组读取的逻辑。
另一件事,useEffect在第二个参数上需要一个变量,但是它用于定义何时更新(当变量传递更改时,它将被执行)。如果传递setPost变量,则仅在第一个渲染时以及每次更改此变量时都将调用useEffect(您不能更改,因为它是用const定义的函数)。如果您希望只调用一次,只需传递一个空数组即可。