React-redux-firebase 正确加载数据但在组件内部不可用
React-redux-firebase loads data correctly but isnt available inside component
遵循 https://github.com/prescottprue/react-redux-firebase 中的方案(转到 基于 Props 的查询 段落)。
负责从 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
- state 是一个不可变的 Map。
问题:如您所见,数据提取正确,但组件未重新呈现。好像道具没变。
问: 如何强制组件更新并正确接收道具?
谢谢你!
与 NoMoreQuestions 一起,我们找到了解决方案。我不得不使用 populate
函数而不是 get
.
import { populate } from 'react-redux-firebase';
奇怪的是文档对此有不同的说法。
react-redux-firebase
的作者在这里。完全开放请求更改文档以使这一点更清楚。
需要注意的事项:原始问题使用 v1.. 语法,这与 v2.. 的语法不同存储在 redux 中(Immutable.js 不再使用)。这意味着 state.get
不再是函数。
遵循 https://github.com/prescottprue/react-redux-firebase 中的方案(转到 基于 Props 的查询 段落)。
负责从 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
- state 是一个不可变的 Map。
问题:如您所见,数据提取正确,但组件未重新呈现。好像道具没变。
问: 如何强制组件更新并正确接收道具?
谢谢你!
与 NoMoreQuestions 一起,我们找到了解决方案。我不得不使用 populate
函数而不是 get
.
import { populate } from 'react-redux-firebase';
奇怪的是文档对此有不同的说法。
react-redux-firebase
的作者在这里。完全开放请求更改文档以使这一点更清楚。
需要注意的事项:原始问题使用 v1.. 语法,这与 v2.. 的语法不同存储在 redux 中(Immutable.js 不再使用)。这意味着 state.get
不再是函数。