mobx - 我可以创建一个在 React 渲染函数中计算的 mobx 以像 useMemo() 一样使用吗?
问题描述
我想知道如何在useMemo
钩子内使用 mobx observable。我知道我可以将所有可能的依赖项传递给钩子,但这可能会有点混乱:
const MyComponent = observer(() => {
const people = useGetPeople();
const peopleFormatted = useMemo(() => {
return people.map(person => person.fullName);
},[ ...? ]);
});
我不能轻易让每个人firstName
都成为useMemo
. 我想我可以将功能提取到计算...但我觉得这行不通:
const MyComponent = observer(() => {
const people = useGetPeople();
const peopleFormatted = computed(() => {
return people.map(person => person.fullName);
});
});
我觉得它会混淆 mobx 在反应必须依赖的反应中创建计算。
我知道我可以将计算结果提取给每个人,但我不觉得这是一个适合每个用例的解决方案。
提前致谢!
解决方案
假设const people = useGetPeople();
是某种人对象的可观察数组......
const peopleFormatted = computed(() => {
return people.map(person => person.fullName);
}).get(); //note .get()
应该在观察者函数体内正常工作。请参阅https://mobx.js.org/computeds-with-args.html#2-close-over-the-arguments
让我困惑的是useGetPeople();
这通常意味着您正在使用 react 的状态 api 来管理状态和反应。即:useState
等。
没有看到useGetPeople()
引擎盖下的内容,很难给出具体的答案。
推荐阅读
- javascript - 修改 Spree Cart.js 以显示正确的购物车项目计数和数量
- swift - 无法在 2 个 ViewController 之间添加 Segue
- django - Facebook 登录在网站上不起作用
- python - Scipy detrend 不等同于 MATLAB
- mysql - 从 MySQL 导出数据 - 替换 '0000-00-00'
- java - 在 iframe selenium Java 中关闭 iframe 弹出窗口
- php - 无法将返回值与字符串进行比较
- php - Symfony - 在控制器中获取“重定向自”路由
- jenkins - 如何“减少”Jenkins Pipeline 输出路径
- 3d - 在 3D 中用 8 个点创建四边形平截头体