我创建了一个屏幕,其中包含一个带有来自外部API的数据源的平面列表。我正在使用redux将这些数据存储在一种状态下,然后将其检索到列表中。
我用于从API中获取数据,而我正在使用axios。因此,为了将数据源提供给清单,我正在上一个屏幕中获取数据。例如-我有一个按钮,按此按钮将导航到一个包含平面列表的新屏幕。因此,我通过上一页中按钮的onPress函数发布axios请求来获取数据。然后将该数据存储到Redux存储中的状态,然后将数据作为平面列表的源。
我认为这不是正确的方法吗?如何从同一组件上的外部API获取数据以及如何呈现(由于在获取数据时将呈现该组件)。如何有效地做到这一点?
那么,如果用户进入其他屏幕并重新进入该屏幕,如果一切正确,将会发生什么?如何有效且优化地做到这一点?
我想没有任何代码可显示。如果你们需要上面说的任何代码,请让我知道会更新它们。
答案 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。
我确定我在这里提到的是一种简单的实现方式。希望这会有所帮助。