2017-03-06 6 views
0

같은 질문을하는 데 많은 질문이 있다는 것을 알고 있지만 그 답변 중 어느 것도 내 특정 사례에서 제대로 작동하지 않는 것으로 알고 있으며 몇 시간 동안 계속했습니다. 그것을 알아낼 수 없습니다.ReactJS : 준비되지 않음 속성 xxx가 정의되지 않음

{ 
    current: {} 
    forecast: 
     forecastday:[ // 
      0: {...} 
      1: {...} 
      2: {...} 
      3: {...} 
      4: {...} 
     ] //Array of five objects 
    location: {} 
} //this object is part of a bigger response object 

I console.log(objectName.forecast.forecastday) 내가 다시이 실제로 있다는 뜻 배열을 얻을 때 :이처럼 보이는 API 호출에서 개체를 다시 얻을 WeatherApp.I에 대한 ReactJs 자습서를 다음과 같은거야.

하지만

var forecastData = props.forecast.data; 
var days = forecastData.forecast.forecastday.map(function (day) { 
     //do something 
}); 

을 시도 할 때 오류 Uncaught TypeError: Cannot read property 'forecast' of undefined 날 다시 제공합니다. 나는 또한 로깅을 시도했다 forecastData 그리고 다시 잘 온다. forecast이 분명히 존재하기 때문에 내가 분명히 놓치지 않는 한 무슨 일이 일어나고 있는지 알 수 없습니다.

감사합니다.

+0

아마도 'var forecastData = props.forecast.data;'이 문제가 발생합니까? 'forecastData'가 올바른 데이터를 제공한다면 –

+0

'props.forecast.data'는'undefined'입니다. 소품이 부모 구성품에 의해 올바르게 전달되고 있는지 확인하십시오. render 함수에'console.log (this.props)'를 추가하고 전달되는 것을 조사하십시오. – SimpleJ

+0

데이터가 정확하게 없을 때 초기 렌더를 다루고 있습니까? 문제를 일으키는 블록은 API 호출이 완료된 후에 만 ​​액세스 가능해야합니다. 제 느낌은 당신이 그런 보호 장치가 없다는 것입니다.이 코드는 api cal이 업데이트되기 전에 호출됩니다/상태를 업데이트합니다. – finalfreq

답변

0

초기 상태를 고려하지 않은 것일 수 있습니다. API 호출이 비동기식으로 발생하기 때문에 props.forecast.data이 구성 요소의 초기 탑재시 정의되지 않을 수 있습니다. 이 처음 forecastData가 존재하는지 확인합니다

var days = forecastData 
    ? forecastData.forecast.forecastday.map(function (day) { 
    //do something 
    }) 
    : null; 

, 그것이 존재하는 경우, 그것은 forecastData.forecast.forecastday 배열을 통해 매핑합니다 :

당신은 같은 것을 할 수 있습니다.

ForecastData가 없으면 해당 변수는 null을 렌더링합니다.

관련 문제