Реагировать на родной List.Item не определено не является объектом - PullRequest
0 голосов
/ 24 апреля 2020

Привет всем, у меня есть проблема с моим List.item вот код:

я не знаю, откуда проблема

import React from 'react';
import {
    Avatar,
    Button,
    Card,
    Title,
    Paragraph,
    List,
} from 'react-native-paper';
import HTML from 'react-native-htmlview';
import {
    View,
    ScrollView,
    ActivityIndicator
} from 'react-native';
import moment from 'moment';

export default class SinglePost extends React.Component {
    constructor(props) {
        super(props);
        this.state = {
            isloading: true,
            post: [],
        };
    }
    componentDidMount() {
        this.fetchPost();
    }
    async fetchPost() {
        let post_id = this.props.route.params?.post_id
        const response = await fetch(
            `https://kriss.io/wp-json/wp/v2/posts?_embed&include=${post_id}`
        );
        const post = await response.json();
        this.setState({
            post: post,
            isloading: false,
        });
    }
render() {
    let post = this.state.post;

    return (
        <ScrollView>
            <Card>
                <Card.Content>
                    <Title>{post[0].title.rendered}</Title>
                    <List.Item
                        title={`${post[0]._embedded.author[0].name}`}
                        description={`${post[0]._embedded.author[0].description}`}
                        left={props => {
                            return (
                                <Avatar.Image
                                    size={55}
                                    source={{
                                        uri: `${post[0]._embedded.author[0].avatar_urls[96]}`,
                                    }}
                                />
                            );
                        }}
                    />
                    <List.Item
                        title={`Published on ${moment(
                            post[0].date,
                            'YYYYMMDD'
                        ).fromNow()}`}
                    />
                    <Paragraph />
                </Card.Content>
                <Card.Cover source={{ uri: post[0].jetpack_featured_media_url }} />
                <Card.Content>
                    <HTML value={post[0].content.rendered} addLineBreaks={false} />
                </Card.Content>
            </Card>
        </ScrollView>
    );
}
}

моя цель состоит в том, чтобы отобразить сообщение из блога WordPress на мою страницу с одним постом в компоненте карты, но я продолжаю получать эту ошибку: Ошибка типа: undefined не является объектом (оценка 'post [0] .title')

Спасибо за вашу помощь:)

1 Ответ

0 голосов
/ 24 апреля 2020

Вы не можете получить состояние с помощью let post = this.state.post;

Вы можете использовать " назначение деструктурирования ", например

export default class SinglePost extends React.Component {
  ...
  render() {
    const { post, isloading} = this.state;   //Destructuring assignment from state
    //...

     <Title>{post[0].title.rendered}</Title>  //Then get it

    //...
  }
}
...