reactjs - 在哪里转换 Redux 状态以在 UI 中使用
问题描述
我有一个“事件”列表:
{
id: 1,
description: "Did something",
date: <date>,
eventTypeId: 1
}
我在 componentDidUpdate 中获取这些事件,然后将它们作为道具形式传递给我的组件 redux connect mapStateToProps - 它们来自“选择器” - getEvents。
我想在想要以这种格式显示它们的 react-big-calendar 上显示它们-
Event {
title: string,
start: Date,
end: Date,
allDay?: boolean
resource?: any,
}
我在哪里将它们从我的对象转换为 react-big-calendar 对象?
似乎这必须发生在组件中,所以如果我切换到另一个日历库,我的 redux 代码将保持不变。
有这样做的标准模式吗?我应该直接在我的渲染方法中执行此操作吗?
render() {
let bigCalEvents = this.props.events.map(e => <big cal event>);
....
}
还是有更好的方法来做到这一点?
解决方案
您应该编写一个选择器并在该选择器中转换这些事件,而不是在组件中转换它们。任何时候您想稍后更改为不同的库,您只需要更改一个选择器中的逻辑,而不是在每个组件中更改它
const mapStateToProps(state, props) {
const events = getEvents(state, props);
return {
events
}
}
...
const getEvents = (state, props) => { // this can be a reselect selector as well
// transform logic here
return events;
}
推荐阅读
- angular - 在我的 Angular 8 项目中使用 Netlify 部署失败
- node.js - 为什么 grpc-gateway 没有构建新的端点
- firebase - 如何从异常 try catch 中返回并显示错误消息
- java - 无论我尝试什么,片段上的按钮都不会链接到另一个活动
- python - 如何将 jupyterhub 小部件创建为对象?
- python - docker-compose 忽略已安装的 django、virtualenv
- java - JpaSpecificationExecutor的方法是怎么做的
.findAll(规范 规范)有效吗? - tensorflow - 如何在 tensorflow lite 模型文件 (v 1.x) 中嵌入模型版本或描述
- python - 如何在 Pyqt 中创建可调整大小的布局 UI?
- javascript - Chrome扩展打开多个标签