javascript - 为什么不直接使用共享导入而不是 React.createContext?
问题描述
我正在构建一个应用程序,并且我有一个管理 websockets 的类,我希望在每个组件中都可以使用它,因为它们中的很多都是从中读取的。试图避免通过无数组件传递道具。
为此,我一直在尝试使用React.createContext
,但我收到了这样的错误:
App defines an invalid contextType. contextType should point to the Context object returned by React.createContext().
可能有一个解决方法,但我开始怀疑:为什么不把我想要共享的值放入一个 lib 文件中,然后将该文件导入到我需要共享值的文件中?这有什么缺点吗?
使用 mobx observable/observe 模式,对属性的更新似乎仍然反映在 dom 中。
例如:
shared.js
import { observable } from 'mobx';
class SharedClass {
@observable x = 1;
}
const sharedInstance = new SharedClass(1);
export {
sharedInstance,
}
应用程序.js
import { observer } from "mobx-react";
import { sharedInstance } from 'lib/shared';
@observer
class App extends React.Component() {
constructor(props) {
super(props);
sharedInstance.x = 2;
}
render() {
return <>
The shared value is {sharedInstance.x}.
<Stuff... eventually with a nested Page component>
</>
}
}
页面.js
import { observer } from "mobx-react";
import { sharedInstance } from 'lib/shared';
@observer
class Page extends React.Component {
render() {
return <>
The shared value is {sharedInstance.x}.
</>;
}
}
解决方案
推荐阅读
- javascript - HTML5 Autocapitalize 不适用于输入类型 = 文本
- javascript - 反向地理编码在移动设备上不起作用
- node.js - 为什么从定制模块导入的函数在 JSfiddle 中工作时表现不同?
- ios - 如何在 WKWebView 中获取令牌?
- python - 如何将 virtualenvwrapper 正确安装到我的 Mac?
- sql-server - 从 XML 列查询
- java - 如何将 Keycloak 设置为 Eclipse Hono 的身份验证服务提供者 (OIDC)?
- c++ - 如何使用其他类作为一个类的成员?
- php - 如果给出了每周该科目的时间表,我如何生成一个日期数组,其中该科目将在课堂上进行
- nestjs - 更新后无法启动嵌套项目/停止在 Typeorm 依赖项初始化