reactjs - 如何使用正确的类型安全注入将 mobx-react 5 迁移到 6?
问题描述
现在我正在使用带有类组件项目的 TypeScript React,并且我正在逐渐迁移到反应钩子。
由于 mobx react 6 文件说Store injecting
已经过时了。当项目使用 mobx-react 6 时,如何使用旧式注入(@inject)逐步迁移我的 React 类组件?
有一个迁移指南,示例如下代码。
import { MobXProviderContext } from 'mobx-react'
function inject(selector, baseComponent) {
const component = ownProps => {
const store = React.useContext(MobXProviderContext)
return useObserver(() => baseComponent(selector({ store, ownProps })))
}
component.displayName = baseComponent.name
return component
}
问题是这个函数的正确类型安全是什么。谢谢!
我已经尝试过了,但我现在无法baseComponent(selector({ store, ownProps })))
正确计算类型。
const inject = <InProps, OutProps>(selector: (store: InProps) => OutProps) => {
return <WrappedProps>(baseComponent: React.ComponentClass<WrappedProps> | React.FC<WrappedProps>) => {
const component = (ownProps: WrappedProps) => {
const store = React.useContext(storesContext)
return useObserver(() => baseComponent(selector({ store, ownProps })))
}
component.displayName = baseComponent.name
return component
}
}
解决方案
推荐阅读
- html - 如何在移动视图中将 2 个引导轮播并排放置?
- python-3.x - 无法使用 AWS SNS 向印度 (+91) 发送短信
- python - 用户输入在 pandas DataFrame 中不起作用
- java - 我如何才能读取每个空单元格周围有多少地雷。游戏扫雷
- c# - 如何在 ASP.NET 中显示警报消息并重定向到主页
- python - SQLite 如何根据自定义规则对数据进行分组
- spring-boot - 非空引用空值或瞬态值
- c++ - FFMpeg C++ 如何创建具有多个输出的过滤器?
- c# - 使用 C# Windows 10 iot core 将文件复制到 USB
- linux-kernel - 使用 modprobe 时设备未显示在 /dev 下