Uncaught TypeError: Невозможно прочитать свойство 'map' из неопределенного (REACT NATIVE - Javascript) - PullRequest
0 голосов
/ 01 апреля 2020

Попытка импортировать файл Json, а затем изучить и отобразить его в приложении React Native. Я только изучаю React Native, и в то же время Javascript.

import React, { Component } from 'react';
import {
    Text,
    View,
    AsyncStorage
} from 'react-native';

import{eventos} from './Events';

export default class Admin extends React.Component{

    constructor(props){
        super(props);
        this.state={
            eventos
        }
        try{
            AsyncStorage.getItem(eventos).then((value)=>{
                if(value!=null){
                    console.log("Events esta completo")
                }else{
                    console.log("Events esta vacio")
                }
                this.setState({
                    eventos:JSON.parse(value)
                })
            })
        }catch(err){
            console.log(err)
        }
    }
parseEventsData(){

        console.log("Deberia salir algo")
        return this.state.events.map((eventos,i)=>{
            return(
                <View key={i}>
                    <Text>
                        {eventos.title}
                    </Text>
                    <Text>
                        {eventos.responsible}
                    </Text>
                    <Text>
                        {eventos.description}
                    </Text>
                </View>
            )
        })
}
render(){
    return(
        <View>
            {this.parseEventsData()}
            <Text>No salio nada</Text>                 
        </View>

    );
}

}

Следующим является Json.

введите изображение описание здесь

И это ошибка, которую я получаю.

введите описание изображения здесь

Я только изучаю React Native, и в в то же время Javascript.

введите описание изображения здесь

Ответы [ 2 ]

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

У вас есть несколько проблем:

  1. У вас, похоже, есть опечатка в вашем parseEventsData. Везде, где вы называете это eventos, но здесь вы называете это events. Не уверен, что вы намерены, но несоответствие означает, что ваш вызов setState устанавливает свойство, отличное от того, на которое вы ссылаетесь позже в parseEventsData.
  2. Если вы исправите описанную выше опечатку, this.state.eventos будет сначала не определено, и не будет определено, пока ваше обещание в конструкторе не разрешится. Когда вы звоните this.state.eventos.map, вы вызываете карту со значением, которое не определено, как указывает ваша ошибка. Вам нужно либо проверить, является ли он неопределенным перед вызовом map, либо инициализировать его пустым массивом.
0 голосов
/ 01 апреля 2020

Проверяя ваш код, вы можете заметить, что состояние var называется "eventos", и вы отображаете "this.state.events". Просто опечатка.

...