一、创建文件

stores
——- auth.js 例子文件
——- index.js 总入口

二、安装

  1. yarn add mobx
  2. yarn add mobx-react

三、书写相应代码

auth.js

  1. import相应的文件
  1. import { observable, action } from "mobx"
  1. 声明class类,并导出
  1. class AuthStore {
  2. @observable 变量名 =
  3. @boservable values = {
  4. username = "梁又文"
  5. sex = "男"
  6. }
  7. @action 方法名(参数) {
  8. console.log(参数)
  9. }
  10. @action setName(name){
  11. this.values.username = name
  12. }
  13. }
  14. export { AuthSotre }

index.js

  1. import相应文件
  1. import React, { createContext, useContext } from "react"
  2. import { 类名 } from "../stores/文件名"
  3. import { AuthSotre } from "../stores/auth"
  1. 创建Context对象
  1. const context = createContext({
  2. 定义方法名: new 类名(),
  3. authStore: new AuthStore()
  4. })
  1. 将Context对象全局导出
  1. export const useStores = () => useContext(context)

四、配置package.json

  1. 将react隐藏的webpack暴露出来,释放之前请先提交代码
  1. yarn eject
  1. 安装插件
  1. yarn add @babel/plugin-proposal-decorators
  1. 修改package.json
  1. "babel": {
  2. "plugins": [
  3. ["@babel/plugin-proposal-decorators", {"legacy": true}]
  4. ],
  5. "presets": [
  6. "react-app"
  7. ]
  8. }

五、在组件中进行使用

  1. import相应文件
  1. import { observer } from "mobx-react"
  2. import { useStores } from "../stores"
  1. 使用observer监控组件,并解构我们需要的对象出来并使用
  1. const Demo = observer(()=>{
  2. const { AuthStore } = useStores()
  3. return (
  4. <>
  5. <h1>我是Demo组件</>
  6. </>
  7. )
  8. })
  1. 解构后我们就可以使用该对象的属性及方法
  1. const Demo = observer(()=>{
  2. const { AuthStore } = useStores()
  3. const changeName = () => {
  4. AuthStore.setName("改名字后的梁又文")
  5. }
  6. return (
  7. <>
  8. <h1>我是Demo组件,我的名字叫{ AuthStore.values.username }</h1>
  9. <button onClick={changeName}>改名字</button>
  10. </>
  11. )
  12. })