1

を使用する RN (0.44.2) mobx(3.1.10) アプリがありますFlatList。私は基本的にhttps://blog.callstack.io/write-react-native-apps-in-2017-style-with-mobx-e2dffc209fcbに従っています

例とは対照的に、自分のストアを使用する場合toJS()、FlastList をレンダリングするために使用する必要があります。

    // renders list
    <FlatList
      data={this.props.giphyStore.images.toJS()}
      keyExtractor={(_, i) => i}
      renderItem={({ item }) => <Text>found the data</Text>}
    />

    // does not render list
    <FlatList
      data={this.props.giphyStore.images}
      keyExtractor={(_, i) => i}
      renderItem={({ item }) => <Text>did not find the data</Text>}
    />

toJS()なぜ必要な場合とそうでない場合があるのか​​ を理解するのに本当に苦労しています。

私の店はこのように観察可能な画像を設定しています

async getImageList(query: string) {
  try {
    const requestURL = `${constants.GIPHY_ENDPOINT}${query}`
    const response = await axios.get(requestURL);
    const imgs = response.data.data.map((item) => {
      return { id: item.id, url: item.images.downsized.url }
    })
    this.images.replace(imgs)
  } catch (e) {
  }
}

this.images.replace(imgs)フォローアップの質問として、チュートリアルのように、彼が単に行った次のことを行う必要がある理由がわかりませんthis.tracks = response.data.tracks.items。これにより、オブザーバブルが正常にトリガーされます。

誰か提案があれば、とても感謝しています。

4

2 に答える 2