【发布时间】:2021-02-24 07:47:14
【问题描述】:
我想从我的 redux 状态中选择流信息。这是可行的,但是当我尝试从我的 redux 状态中选择深度状态时,我感到非常困惑。我想从ownProps 中选择(state.livestream.subscribeLiveStream[postID].des,state.livestream.subscribeLiveStream[postID].views,...)和postID。这是我的代码。我的问题
- 选择器和组件中的代码好吗?
- 如果不是,请解释原因。
感谢您的帮助。 这是我所拥有的
减速器
state = {
livestream: {
subscribeLiveStream: {
'a': {
des: 'My stream a',
views: 0,
status: 0,
},
'b': {
des: 'My stream b',
views: 0,
status: 0,
}
// 'a', 'b' is ID
}
},
// other
}
选择器
const livestreamSelector = state => state.livestream;
/* select subscribeLiveStream */
export const selectSubLiveStream = createSelector(
livestreamSelector,
livestream => livestream.subscribeLiveStream
);
/* select subscribeLiveStream info */
const getPostID = (_, postID) => postID;
export const makeSelectSubLiveStreamViews = () => createSelector(
[selectSubLiveStream, getPostID],
(subLiveStream, postID) => subLiveStream[postID]?.views || 0
);
在组件中使用:
const LiveStream = ({ postID }) => {
const selectSubLiveStreamViews = useMemo(makeSelectSubLiveStreamViews, []);
const views = useSelector(state =>
selectSubLiveStreamViews(state, postID)
);
return (
<div>
<p>My stream views: {views}</p>
</div>
);
};
【问题讨论】:
-
代码对我来说似乎很好。你说它有效。这里有什么问题?
标签: reactjs redux react-redux reselect