react16.8.0以上MobX在hook中的使用方法详解
- 技术交流
- 2024-10-01 11:42:02
目录
- 引言
- 一般用法
- 修饰方法
- 优化,分离,传值
- 2024.3.11 更新
引言
关于 mobX 在 react 16.8.0 以上的用法
以下例子均取自官网文档
一般用法
import { observer, useLocalStore } from 'mobx-react'; const Hooks = observer(() => { const todo = useLocalStore(() => ({ title: 'Click to toggle', done: false, toggle() { todo.done = !todo.done }, get emoji() { return todo.done ? '' : '' }, })); return}){todo.title} {todo.emoji}
可以看到原来的修饰符@observer
,现在是使用 HOC 来进行扩展的;
修饰方法
1:
import { useLocalStore, useObserver } from 'mobx-react'; function Person() { const person = useLocalStore(() => ({ name: 'John' })) return useObserver(() => ({person.name}))}
使用 useObserver(()=>JSX.Element)
方法取代 observer(()=>JSX.Element)
2:
import { Observer, useLocalStore } from 'mobx-react'; function ObservePerson() { const person = useLocalStore(() => ({ name: 'John' })) return ({person.name} I will never change my name)}{() => {person.name}}
使用部分渲染, 只有被
包裹的才能监听到对应值的改变
优化,分离,传值
import React, { FC } from 'react';import { observer, useLocalStore } from 'mobx-react'; function initialFn(source) { return ({ count: 2, get multiplied() { return source.multiplier * this.count }, inc() { this.count += 1 }, }); } const Counter: FC<{ multiplier: number }> = observer(props => { const store = useLocalStore( initialFn, Object.assign({ a: 1 }, props),// 可以传任意值 ); return ({store.multiplied})})
这种分离的方法,基本已经耦合性已经很低了
2024.3.11 更新
之前 mobx 官方对于 api 又进行了修改,本文也做对应的修改
重要修改: useLocalStore
将要废弃 !!
使用 useLocalObservable
替代, 而且他们的使用方案也不同:
import { useLocalObservable, Observer } from "mobx-react-lite" const Todo = () => { const todo = useLocalObservable(() => ({ title: "Test", done: true, toggle() { this.done = !this.done } })) return ({() => ( ) }{todo.title} {todo.done ? "[DONE]" : "[TODO]"}
)}
可直接作为局部或者全局的变量存储
const user = mobx.observable({ name: "Noa" }) const Todo = () => { return ({() => ( ) }{user.name}
)}
以上就是react16.8.0以上MobX在hook中的使用方法详解的详细内容,更多关于react MobX hook使用方法的资料请关注讯客其它相关文章!
react16.8.0以上MobX在hook中的使用方法详解由讯客互联技术交流栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“react16.8.0以上MobX在hook中的使用方法详解”