我正在观看关于Reactjs / Flux的讨论,期间他们在Facebook应用程序中显示了用于预览用户个人资料图片的代码。
段:
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?