一、创建文件
stores ----- auth.js 例子文件 ----- index.js 总入口
二、安装
yarn add mobx
yarn add mobx-react
三、书写相应代码
auth.js
import相应的文件
import { observable
, action
} from "mobx"
声明class类,并导出
class AuthStore {
@observable 变量名
= 值
@boservable values
= {
username
= "梁又文"
sex
= "男"
}
@action
方法名(参数
) {
console
.log(参数
)
}
@action
setName(name
){
this.values
.username
= name
}
}
export { AuthSotre
}
index.js
import相应文件
import React
, { createContext
, useContext
} from "react"
import { 类名
} from "../stores/文件名"
import { AuthSotre
} from "../stores/auth"
创建Context对象
const context
= createContext({
定义方法名
: new 类名(),
authStore
: new AuthStore()
})
将Context对象全局导出
export const useStores = () => useContext(context
)
四、配置package.json
将react隐藏的webpack暴露出来,释放之前请先提交代码
yarn
eject
安装插件
yarn add @babel
/plugin
-proposal
-decorators
修改package.json
"babel": {
"plugins": [
["@babel/plugin-proposal-decorators", {"legacy": true}]
],
"presets": [
"react-app"
]
}
五、在组件中进行使用
import相应文件
import { observer
} from "mobx-react"
import { useStores
} from "../stores"
使用observer监控组件,并解构我们需要的对象出来并使用
const Demo
= observer(()=>{
const { AuthStore
} = useStores()
return (
<>
<h1
>我是Demo组件
</>
</>
)
})
解构后我们就可以使用该对象的属性及方法
const Demo
= observer(()=>{
const { AuthStore
} = useStores()
const changeName = () => {
AuthStore
.setName("改名字后的梁又文")
}
return (
<>
<h1
>我是Demo组件,我的名字叫
{ AuthStore
.values
.username
}</h1
>
<button onClick
={changeName
}>改名字
</button
>
</>
)
})