哪个是使用State vs Props的正确方法

时间:2017-10-01 22:16:18

标签: react-native apollo-client

试图找出将数据处理成反应组件的方法。

我实际上尝试了这两种方式:

A)国家方式

componentWillReceiveProps(nextProps) {
if (!nextProps.allPostsQuery.loading && !nextProps.allPostsQuery.error) {
  this.setState({
    postList: nextProps.allPostsQuery.allPosts,
  })
 }
}

render () {
    return (
        <FlatList data={this.state.postList}>
    )
}

B)道具方式

render () {
    return (
        <FlatList data={this.props.allPostQuery.data}>
    )
}

有关哪个/为什么的建议?

2 个答案:

答案 0 :(得分:0)

我认为由于apollo-client标记,你有来自GraphQL的实现请求。假设如果你没有实现Redux,那么状态方法是确保组件被刷新,因为将触发render方法。如果你已经拥有Redux,那么props方式是最好的方法,因为当你的数据在全局状态下变化时会触发render方法。

答案 1 :(得分:0)

你可以直接使用道具方式。因为您正在使用apollo-client,它已经保存在redux存储中。因此,只要有来自任何组件的数据的更新,您也将在此组件中接收它,从而自动触发重新渲染。