我有一个组件在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();
任何人都可以帮忙看看我做错了吗?
答案 0 :(得分:1)
您完美地描述了使用componentWillReceiveProps时文档所说的内容
来自文档:
componentWillReceiveProps
组件接收新道具时调用。这种方法不是 要求初始渲染。
在您的方案中,您有什么理由不能使用componentWillMount进行提取调用吗?在呈现组件之前调用componentWillMount,它是您可以调用setState的第一个点。
如果问题是你需要保证渲染在完成提取之前只显示某些数据,那么有一些策略可以做到这一点,但最简单的方法可能就是在构造函数中将状态设置为false (如果您正在使用ES6方法开发),并在获取完成后将其翻转为true。您的渲染方法中的if语句将完善此策略。
如果你想让我整理一个更全面的例子,我可以这样做。