mobx的详细使用

Posted 鲨鱼小猫

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mobx的详细使用相关的知识,希望对你有一定的参考价值。

  • Store.ts
import makeObservable,observable,action from 'mobx'
class Store
    constructor()
        makeObservable(this,
            name: observable,
            setName: action
        )
    
    name = "不写作文的李华"
    setName()
        this.name = "要写作文的李华"
    

  • App.tsx中
import Store from "xxx/store"
import observer from 'mobx-reat'
function App()
 return(
     <div>
     <p>姓名:Store.name</p>
     <button onClick=()=>Store.setName()>改名字</button>
     </div>
 )

export default observer(App)
  • autorun函数
    该函数使用的变量更新后,自动触发这个函数执行
autorun(()=>
    console,log(Store.name)
)
  • reaction函数
//参数1: data函数,其返回值将会作为第二个函数输入
//参数2: 回调函数
//与autorun不同,reaction在初始化时不会自动运行
reaction(
    () => Store.name,
    ()=>
        console.log('李华变了')
    
)
  • 异步操作
//方法1
import  configure  from "mobx"
configure(
    enforceActions: 'never'
)

//方法2
//通过runInAction可以保证所有 异步更新可观察对象的步骤都应该标识为action
import makeObservable,observable,action from 'mobx'
class Store
    constructor()
        makeObservable(this,
            name: observable,
            setName: action
        )
    
    name = "不写作文的李华"
    setName()
        setTimeout( () => 
            runInAction(() => 
                this.name = "要写作文的李华"
            )
        
    

  • 合并多个store
  • RootStore.ts
import  useContext, createContext  from‘ react
import Store1 from 'xxx/Store1'
import Store2 from 'xxx/Store2'
cLass RootStore 
    Store1 = Store1
    Store2 = Store2

const store = new RootStore()
//createContext传入参数的话,不用提供consumer和provider   
const Context = createContext(store)
export const usestore = () => 
   return useContext(Context) 

  • App.tsx中
import usestore from "xxx/RootStore"
import observer from 'mobx-reat'
function App()
    const [store1,store2] = usestore()
 return(
     <div>
     <p>姓名:Store1.name</p>
     <p>姓名:Store2.name</p>
     </div>
 )

export default observer(App)

以上是关于mobx的详细使用的主要内容,如果未能解决你的问题,请参考以下文章

mobx的详细使用

有多个 mobx 实例处于活动状态

React Native使用Mobx总结

从零开始搭建一个 React + Mobx + React Router 脚手架

李华《灵武二孝赞并序》中之“灵武”系指何地?

React--》状态管理工具—Mobx的讲解与使用