如何从JSX的功能组件中的状态访问数据

时间:2019-12-20 23:01:48

标签: reactjs react-native jsx

我正在学习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;

1 个答案:

答案 0 :(得分:1)

您的api返回一个数组,因此在使用“ post”变量时,您应该添加从数组读取的逻辑。

另一件事,useEffect在第二个参数上需要一个变量,但是它用于定义何时更新(当变量传递更改时,它将被执行)。如果传递setPost变量,则仅在第一个渲染时以及每次更改此变量时都将调用useEffect(您不能更改,因为它是用const定义的函数)。如果您希望只调用一次,只需传递一个空数组即可。