React-redux-firebase正确加载数据但在组件内部不可用

时间:2018-01-05 19:21:58

标签: firebase redux react-redux-firebase

遵循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 - 状态是一个不可变的地图。

enter image description here

问题:如您所见,数据正确获取,但组件未重新呈现。似乎道具没有改变。

:如何强制组件更新并正确接收道具?

谢谢你!

2 个答案:

答案 0 :(得分:1)

NoMoreQuestions 一起,我们找到了解决方案。我必须使用populate函数而不是get

import { populate } from 'react-redux-firebase';

很奇怪,文档正在说些不同的东西。

答案 1 :(得分:1)

此处react-redux-firebase的作者。完全开放以提取对文档的更改请求,以使其更加清晰。

需要注意的一点:原始问题使用的v1。语法与v2。的不同之处在于如何在redux中存储事物(Immutable.js是不再使用)。这意味着state.get不再是一个功能。