React-Native TypeError: Undefined не является объектом (оценивает this.state.signatures.length) - PullRequest
0 голосов
/ 14 октября 2018

Я новичок в реагирующем родстве. Я пытался получить данные из API, а затем показать их в виде.это мой код

FetchSignatures.js:

    const URL = 'http://localhost:8000';

    export default {
     async fetchSignatures() {
       try{
           let response = await fetch(URL+'/api/signatures');
           let responseJsonData = await response.json();
           return responseJsonData;
       }
       catch(e){
         console.log(e)
       }
     }
    }

Signatures.js:

    import React, { Component } from 'react';
    import { View, Text, StyleSheet  } from 'react-native';
    import ajax from '../services/FetchSignatures';
    import SignaturesList from '../components/SignaturesList';

    export class Signatures extends Component {
      state = {
        signatures: []
      }

      async componentDidMount() {
        const signatures = await ajax.fetchSignatures();
        this.setState({signatures});
      }
      render() {
        return (
        <View>
        {
          this.state.signatures.length > 0 ? <SignaturesList signatures= 
          {this.state.signatures}/> : <Text>No Guest</Text>
        }
        </View> 
        )
      }
    }

    export default Signatures;

Всегда возвращается ошибка с сообщением "Ошибка типа: Не определено необъект (оценивая 'this.state.signatures.length').

это снимок экрана моего API:

enter image description here

Пожалуйста, кто-нибудьПомогите мне решить эту проблему .. Спасибо заранее ..

Ответы [ 2 ]

0 голосов
/ 14 октября 2018

эта тема уже закрыта.Я не знаю, как мой реактивный натив не может получить данные API с моего локального хоста.Мой код работает нормально, когда я внедряю свой API в свой vps.

0 голосов
/ 14 октября 2018

Когда вы визуализируете this.state.signatures.length, подписи не создаются как состояние в это время, потому что для извлечения данных из API требуется некоторое время.По этой причине вы получаете неопределенную ошибку.Итак, просто создайте условный рендеринг.

Попробуйте код ниже.

render() {
        if(this.state.signatures){
          return(
            this.state.signatures.length > 0 ? <SignaturesList signatures= 
            {this.state.signatures}/> : <Text>No Guest</Text>

          );
        }
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...