如果存储初始状态为空,则为Redux getter

时间:2016-08-19 04:25:09

标签: facebook reactjs react-native redux flux

我正在观看关于Reactjs / Flux的讨论,期间他们在Facebook应用程序中显示了用于预览用户个人资料图片的代码。

Link to the Youtube video.

段:

class ProfilePicture extends React.component{
  render(){
    let info = usersStore.getUser(this.props.id);
    return (<img src={info.uri} />);
  }
}

这个小片段让我想到他们如何在用户商店中实现getUser?

我知道Flux有多个商店,而Flux只有一个来源。然而,这样的片段让我觉得可能是..如果我正在为服务器获取注释,则返回的值类似于:

/posts
[
{
  id:1,
  title: 'This is post title',
  userId:1,
  userName: 'User name',
  picture: 'http://user.picture',

}
]

让上面的ProfilePicture组件片段不会从Post对象中读取用户信息,它会从用户Store对象中读取它,因此对我来说很有意义,因为在我的应用中用户通常可以访问&lt; 200其他用户。所以也许我应该停止返回每个帖子的用户信息。相反,我会使用存储所有用户信息的用户存储,将它们缓存在本地存储中,如果需要,从服务器检索它们。

所以我考虑更改我的API以回复帖子:

/post  : select id,title from posts;
[
 {id:1,title:'Post title'}
]

还有另一个端点,返回用户信息由Redux懒惰加载。

所以在我的Redux中我需要改变初始状态:

InitialState = {
  posts:[] //where all posts and the user who posted this post is stored
}

分为:

InitialState = {
  posts:[] //posts and userId only
  users:[],//users data  <---- here i need a getter function
}

现在我可以在app初始化期间填充用户存储的一种方法。但这是在应用程序启动时执行此操作的正确时机,还是应该等到首先加载后期组件,并且需要访问特定用户的数据然后我加载用户?

Redux是否可以拥有getter setter?

class ProfilePicture extends React.component{
  render(){
    let info = usersStore.getUser(this.props.id);
    return (<img src={info.uri} />);
  }
}

**为什么他们使用usersStore.getUser而不是仅仅通过id将用户传递给Redux的connect函数中的mapStateToProps?

0 个答案:

没有答案