2017-12-16 2 views
0

그래서 나는 React Native을 처음 접했고 reduxreact-navigation으로이 앱을 만들고 있습니다. 문제는 다음과 같습니다.React Native re-rendering Listview

API에서 레코드를 가져 오는 중, 정상적으로 작동합니다. 레코드를 가져 오는 동안 Loading 아이콘이 나타나면 Listview 레코드가 표시되고 레코드가없는 경우 Text이 표시됩니다. 그런 다음 갑자기 레코드가 표시되지 않고, Loading 아이콘은 레코드가있을 때 계속 표시되지만 레코드가없는 경우 Text이 표시됩니다.

이 버그의 원인은 무엇입니까? Expo을 사용하고 있으므로 페치 된 레코드를 콘솔에 인쇄하고 레코드가 있습니다. 또한 데이터를 가져온 후 을 render 함수에 넣었습니다. 즉, 그냥 Listview을 렌더링하지 않는다는 의미입니다.

미리 감사드립니다. 아래의 제안과 내가 FlatList에서 전달 된 item는 내가 그것을 가지고 목록에 전달 된 데이터를 인쇄 할 때 이상한 원인은 다시 인 정의되지 않은 것으로 나타났습니다로

UPDATE 그래서

내가 FlatList을 사용했습니다 내용. 여기에 내 현재 코드 :

MyFlatlist

return <FlatList 
    data={data} //an array of objects 
    renderItem={this._renderItem} //console prints undefined 
/> 

//I also tried 
return <FlatList 
    data={data} //an array of objects 
    renderItem={({item}) => this._renderItem(item)} //I think this doesn't call the method cause it doesn't print anything on the console. 
/> 

MyRenderItem

_renderItem = ({item}) => { 
    console.log(item) 
} 

FINAL UPDATE

그래서, 내가 얻을 먼저 API를이 문제의 원인 두 가지 요인이 있었다 내 데이터가 내보기에서 액세스하는 필드에 어떤 결과가 더 이상 존재하지 않는 것으로 변경되었습니다. React Native 이것을 결과적으로 렌더링은 에러 메시지없이 멈추고 그 이유는 그것이 찾기 어렵 기 때문이다. 둘째, FlatList을 사용하면 renderItem 함수로 보낸 항목 당 실제 데이터가 포함 된 item 속성이있는 객체 아래에 있으므로 렌더링이 다시 중지됩니다.

내 설정에 관한 한 지금까지 수정되었습니다. 모든 도움을 주셔서 감사합니다!

+1

몇 가지 코드를 알려주십시오. 잘못된 것일 수 있습니다. –

+0

아, 죄송합니다. 모든 코드가 제대로 작동하지 않는다고 말하면서 코드를 표시 할 수 없었습니다. 갑자기 코드가 작동하지 않는다고 말했기 때문에 코드에 손을 대지도 못했고 다른 요인은 무엇입니까? – Jed

+0

아, 작동하고 있었는데 아무런 변화없이 멈췄습니까? 나는 엑스포를 실제로 사용하지는 않았지만 모든 것을 닫고 실행중인 모든 포장기를 멈추고 다시 실행 해보려고합니다. –

답변

1

이전에 ListView를 다시 렌더링하지 않았습니다. docs에서

: - 자세한 내용은 ListViewDataSource 참조가 소스 데이터가 변경 되었기 때문에 행을 다시 렌더링 할 필요가있는 경우 데이터 소스에 제공

rowHasChanged 기능리스트 뷰를 알려줍니다.

ListView는 사용이 권장되지 않았습니다. https://facebook.github.io/react-native/docs/listview.html을 참조하십시오. FlatList 또는 SectionList을 사용해보세요. 이것에 대한 자세한 내용은 article입니다.

+0

안녕하세요, 여전히 성공하지 못했습니다. 제 질문을 수정했습니다. – Jed

+0

문서에서 핸들을 사용해 보시겠습니까? https://facebook.github.io/react-native/docs/flatlist.html ' {item.key}} /> ' – skylerfenn

+0

다시 질문을 올렸습니다. 결국 제 잘못이었습니다. 문제를 일으켜서 미안해. :) – Jed

관련 문제