reactjs - Mobx - 何时将 useLocalStore 钩子与 react-mobx 一起使用
问题描述
我不明白为什么useLocalStore
存在钩子。我使用从lib导入的方法在 React 组件主体之外声明存储。observable
mobx
然后,以任何方式使用 store 的每个组件都observer
从mobx-react
.
一切都很好,但我不确定我是否做错了什么,因为useLocalStore
整个文档都使用了钩子,而我没有使用它。
在 react 组件之外声明 store 的示例:
import { observable } from 'mobx'
import { observer } from 'mobx-react'
const person = observable({ name: 'John' })
const Person = observer(function Person() {
return (
<div>
{person.name}
<button onClick={() => (person.name = 'Mike')}>No! I am Mike</button>
</div>
)
})
我为什么要使用useLocalStore
钩子?
解决方案
它创建了一个在渲染之间保持稳定的本地 observable 。
您可以将 if 与功能组件一起使用。在示例中,您可以看到该组件不依赖任何react context
or external store
,但它仍在使用mobx
并且完全自包含。
import { useObserver, useLocalStore } from 'mobx-react'
function Person() {
const person = useLocalStore(() => ({ name: 'John' }))
return useObserver(() => (
<div>
{person.name}
<button onClick={() => (person.name = 'Mike')}>No! I am Mike</button>
</div>
))
}
推荐阅读
- elm - Elm 0.19 --优化和移植
- python - spacy 在 Windows 10 和 Python 3.5.3 上找不到模型'en_core_web_sm' :: Anaconda custom (64-bit)
- java - Mac 上的 Eclipse:无法解析导入 javafx
- machine-learning - 强化学习中折扣因子 γ(gamma)的完整含义是什么?
- javascript - 基于 Django 自定义页面的 CMS
- mips - 打印用户使用系统调用 3 和系统调用 5 EduMIPS64 输入的值
- kubernetes-helm - Kubernetes Helm Chart 不会更新
- makefile - 一个 Makefile 中的多个编译器
- pandas - Pandas:用于导出到 csv 的可变精度
- node.js - base64string上的Nodejs Payload太大(Http 413)