- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有一个 React + Redux + Typescript 应用程序,由一张 map 、几个图表和一系列模式对话框(其中一个是打印表单)组成。 presentational and container components组成如下。
┌──────────────────────────────────────────┐
│ app.tsx │
│ ┌─────────────────────────────────────┐ │
│ │ modalsContainer.tsx │ │
│ │ ┌────────────────────────────────┐ │ │
│ │ │ printModal.tsx │ │ │
│ │ │ ┌───────────────────────────┐ │ │ │
│ │ │ │ printFormContainer.tsx │ │ │ │
│ │ │ │ const mergeProps(...); │ │ │ │
│ │ │ └───────────────────────────┘ │ │ │
│ │ └────────────────────────────────┘ │ │
│ └─────────────────────────────────────┘ │
│ ┌─────────────────────────────────────┐ │
│ │ mapContainer.tsx │ │
│ │ ┌────────────────────────────────┐ │ │
│ │ │ map.tsx │ │ │
│ │ │ private map:EsriMap │ │ │
│ │ └────────────────────────────────┘ │ │
│ └─────────────────────────────────────┘ │
│ ┌─────────────────────────────────────┐ │
│ │ dashboard.tsx │ │
│ │ ┌────────────────────────────────┐ │ │
│ │ │ charts.tsx │ │ │
│ │ └────────────────────────────────┘ │ │
│ └─────────────────────────────────────┘ │
└──────────────────────────────────────────┘
打印表单允许用户将图表和 map 打印成 pdf 格式。基于所选图表和当前 map 打印报告的 Web 请求。此逻辑在 const mergeProps(...);
中设置如下所示:
const mergeProps = (stateProps: any, dispatchProps: any, ownProps: any): any => {
return {
fetchReport: (title: string, summary: string, includeMap: boolean) => {
if(includeMap) {
// fetch map image
// need access to mapcontainer /map / esrimap here
}
// ... fetch report ...
},
close: dispatchProps.close
};
};
这大部分都有效,但我还没有在报告中包含 map 图像。为了生成 map 图像,我需要执行 PrintTask .打印任务的参数之一是 esri map 对象。但是,我无法从 mergeProps 访问 MapContainer 或 Map 组件。如果我这样做了,我可以添加 Print():Promise<any>
函数执行任务并返回图像。
我真的很想避免使用全局变量。 future 的其他功能也可能需要访问 map 。我还想避免将组件作为 props 如此深入地传递到堆栈中。我读了一些关于 context 的内容,但这似乎是极不推荐的。
如何干净利落地将一个组件传递给堆栈深处的另一个组件?
最佳答案
一些想法:
首先,将任何不可序列化的东西(例如组件或函数)放入 Redux 状态通常不是一个好主意(根据 https://redux.js.org/faq/organizing-state#can-i-put-functions-promises-or-other-non-serializable-items-in-my-store-state )。
其次,为什么当前在mergeProps
中定义了回调逻辑?该选项实际上应该只是万不得已的后备方案。最好单独定义回调并将它们传递给组件。我在 http://blog.isquaredsoftware.com/2016/10/idiomatic-redux-why-use-action-creators/ 有一些讨论和例子.
接着,我认为最简单的方法是定义一个单独的回调函数,它将所需的标志和 EsriMap 对象作为参数,并将该函数作为 prop 传递给 Map 组件.
关于reactjs - 如何干净利落地将 React 组件传递给组件层次结构深处的另一个组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41557696/
我正在尝试将多个水平链接的 Button 和 TextView 垂直链接为 View 集,但仍保持平面 View 层次结构。这是我的初始布局和代码:
到目前为止,我已经在Google BigQuery上训练了几种模型,目前我需要查看模型的外观(即架构,损失函数等)。 有没有办法获取这些信息? 最佳答案 仔细阅读文档后,我可以说该功能尚不存在。我什至
本文实例讲述了PHP实现二叉树深度优先遍历(前序、中序、后序)和广度优先遍历(层次)。分享给大家供大家参考,具体如下: 前言: 深度优先遍历:对每一个可能的分支路径深入到不能再深入为止,而且每个
我是一名优秀的程序员,十分优秀!