React Native在渲染之前进行网络调用

时间:2016-08-11 19:20:32

标签: react-native

我有一个组件在ListView中显示用户,需要在呈现之前进行提取调用。

我使用以下方式导航到此组件:

this.props.navigator.resetTo({ id: 'ListUsers',  getusers: true });     

ListUsers组件中我有componentWillReceiveProps,以便我可以在渲染之前进行提取调用。

但是从不调用该方法。

ListUsers开始,我可以导航到AddUser组件。

从此处添加新用户或用户可以取消。

如果添加了新用户,我将使用以下命令导航回ListUsers组件:

this.props.navigator.resetTo({ id: 'ListUsers',  getusers: true });     

此时调用componentWillReceiveProps

如果用户取消,我将使用以下方式导航回ListUsers组件

this.props.navigator.pop();

任何人都可以帮忙看看我做错了吗?

1 个答案:

答案 0 :(得分:1)

您完美地描述了使用componentWillReceiveProps时文档所说的内容

来自文档:

  

componentWillReceiveProps

     

组件接收新道具时调用。这种方法不是   要求初始渲染。

在您的方案中,您有什么理由不能使用componentWillMount进行提取调用吗?在呈现组件之前调用componentWillMount,它是您可以调用setState的第一个点。

如果问题是你需要保证渲染在完成提取之前只显示某些数据,那么有一些策略可以做到这一点,但最简单的方法可能就是在构造函数中将状态设置为false (如果您正在使用ES6方法开发),并在获取完成后将其翻转为true。您的渲染方法中的if语句将完善此策略。

如果你想让我整理一个更全面的例子,我可以这样做。