在React Native中使用外部API呈现Flatlist的正确方法

时间:2019-03-21 17:21:06

标签: javascript list react-native

我创建了一个屏幕,其中包含一个带有来自外部API的数据源的平面列表。我正在使用redux将这些数据存储在一种状态下,然后将其检索到列表中。

我用于从API中获取数据,而我正在使用axios。因此,为了将数据源提供给清单,我正在上一个屏幕中获取数据。例如-我有一个按钮,按此按钮将导航到一个包含平面列表的新屏幕。因此,我通过上一页中按钮的onPress函数发布axios请求来获取数据。然后将该数据存储到Redux存储中的状态,然后将数据作为平面列表的源。

我认为这不是正确的方法吗?如何从同一组件上的外部API获取数据以及如何呈现(由于在获取数据时将呈现该组件)。如何有效地做到这一点?

那么,如果用户进入其他屏幕并重新进入该屏幕,如果一切正确,将会发生什么?如何有效且优化地做到这一点?

我想没有任何代码可显示。如果你们需要上面说的任何代码,请让我知道会更新它们。

1 个答案:

答案 0 :(得分:1)

您可能应该尝试使用componentDidMount来调用您的api。 初始呈现之后,componentDidMount仅被调用一次。 您提到要在redux存储中存储数据。

您可能应该创建类似以下的事件:

const Actions = {
  LOAD_POSTS_REQUEST: 'LOAD_POSTS_REQUEST',
  LOAD_POSTS_FAILURE: 'LOAD_POSTS_FAILURE',
  LOAD_POSTS_SUCCESS: 'LOAD_POSTS_SUCCESS',
};

const postReducer = {
      posts: [],
      isLoaded: false
};

现在,您可以在LOAD_POSTS_SUCCESS上的平面列表中设置所需的数据,并在redux存储中设置isLoaded状态。 现在下一次,当用户重新进入屏幕时,您可以使用state.isLoaded检查来调用api。

我确定我在这里提到的是一种简单的实现方式。希望这会有所帮助。