javascript - 存储复杂的 React 状态
问题描述
我有一个需要通过实时 WebSocket 连接以及嵌套子组件访问/修改的 React 状态。
import React from "react";
import Editor from "component/Editor";
function App() {
let fileTreeData = [
{
id: 1,
type: "directory",
name: "Test Root",
children: [
{ id: 2, type: "file", name: "Test 2" },
{
id: 3,
type: "directory",
name: "src",
children: [
{ id: 4, type: "file", name: "index.js" },
{ id: 5, type: "file", name: "test.js" }
],
expanded: false
},
{ id: 6, type: "file", name: "Test" }
],
expanded: true
}
];
return <Editor fileTreeData={fileTreeData} />;
}
export default App;
我将如何在 React 中实现这一点?全局状态似乎是一种反模式。
解决方案
为此,我会使用MobX。
优点:
- 实现起来很简单。
- 它有很好的性能。
- 它在状态定义上很灵活。
- 您只能将 MobX 用于一个组件,而不是全局,以及全局状态。
缺点:
- 它正在改变数据,因此您必须遵循规则才能获得正确的状态。
- 它非常灵活,因此您可能会误用它。
推荐阅读
- ibm-doors - DXL:无法将历史中发现的某些属性分配给属性
- django - Django 模型默认回调不添加超过 10
- python - 如何编写一个 python 函数,它接收要评估的函数名称字符串列表,并将每个函数的输出堆叠到一个 DataFrame 中
- c# - LINQ 希望将一个列表排序到另一个包含数组的列表中
- r - 具有参与者 ID 和提示的列:在 R 中将它们分成两个不同的列
- javascript - 原型交互式空间地图的问题
- python - 使用 Dataframe 值在 Python 中转换列表中的元素?
- python - mypy:无类型装饰器使函数“my_method”无类型
- python - 将输入从函数发送到变量?
- android - Android Hilt ViewModel注入上下文依赖类