遵循https://github.com/prescottprue/react-redux-firebase的方案(转到基于道具的查询段落)。
负责从firebase获取数据的代码:
export default compose(
firebaseConnect((props) => [
`offers/${props.params.userId}`,
]),
connect((state, props) => {
console.log(state.get('firebase')) // <--- logs data correctly
return {
user: get(state.get('firebase'), `offers/${props.params.userId}`),
};
})
)(UserProfile);
如果你想知道什么是.get
- 状态是一个不可变的地图。
问题:如您所见,数据正确获取,但组件未重新呈现。似乎道具没有改变。
问:如何强制组件更新并正确接收道具?
谢谢你!
答案 0 :(得分:1)
与 NoMoreQuestions 一起,我们找到了解决方案。我必须使用populate
函数而不是get
。
import { populate } from 'react-redux-firebase';
很奇怪,文档正在说些不同的东西。
答案 1 :(得分:1)
此处react-redux-firebase
的作者。完全开放以提取对文档的更改请求,以使其更加清晰。
需要注意的一点:原始问题使用的v1。。语法与v2。。的不同之处在于如何在redux中存储事物(Immutable.js是不再使用)。这意味着state.get
不再是一个功能。