【发布时间】:2019-03-16 08:12:18
【问题描述】:
在下面的示例中,从 firebase 获取数据后,我想添加已经存在于 redux 存储中的用户对象并将其附加到所有消息对象中。请求你帮忙。
问题:
- 在动作创建器中访问状态是一种好方法吗?如果是,怎么做?
- 如果没有,有哪些替代方案?
db.collection(`messages/${documentId}/chat`)
.get()
.then(snapshot => {
const messages = [];
snapshot.docs.forEach(doc => {
console.log("message", doc.id, doc.data());
messages.push({
id: doc.id,
from: doc.data().from,
to: doc.data().to,
text: doc.data().text,
timestamp: doc.data().timestamp.seconds * 1000
});
});
dispatch({ type: GET_CHAT, payload: messages });
});
【问题讨论】:
-
为什么需要让状态生效?
-
我正在构建聊天应用程序,并希望在我从 firebase 收到聊天消息后附加已经查询过一次并出现在商店中的用户对象。
-
所以你让我说一个用户存储和一个消息存储对吗?您想在查询消息时获取 userInfo,然后将其保存到您的消息存储中?
-
我同意这个回复的人,也许它会给你一些线索linkredux的作者
-
“想要附加已经查询过一次并存在于存储中的用户对象”更好的方法是让你的存储在关系数据库的意义上保持正常状态。并且仅在使用选择器将状态映射到组件道具时才对数据进行非规范化。否则你几乎肯定会遇到各种“哦,我更新了用户,但我的聊天组件没有重新呈现”的问题。
标签: react-native redux react-redux