安装依赖 mobx、mobx-react
pages
store
import { observable, action, makeObservable, runInAction } from 'mobx'
class homeStore {
constructor() {
makeObservable(this)
}
@observable num: number = 1
@observable id: string = '123'
@observable arr: any[] = []
@action
setNum = (_num: number) => {
this.num = _num
}
@action
setId = (_id?: string) => {
if (_id) {
this.id = _id
} else {
const { code, data } = Service.getId()
if (code === 200) {
runInAction(() => {
this.id = data?.id
}
}
}
}
}
export default new homeStore()
import homeStore from './homeStore'
const store = {
homeStore
}
export default store
import React from 'react'
import { observer, inject } from 'mobx-react'
import { toJS } from 'mobx'
interface IProps {}
interface IState {}
@inject('homeStore')
@observer
class HomeStore extends React.Component<IProps, IState> {
constructor(props: IProps) {
super(props)
this.state = {}
}
handleSetNum = (_num: number) => {
const { setNum } = this.props.homeStore
setNum(_num)
}
handleSetId = () => {
const { setId } = this.props.homeStore
setId('修改后的id456')
}
handleSetArr = () => {
}
const { num, id, arr } = toJS(this.props.homeStore)
render() {
<button onClick={() => this.handleSetNum(num + 1)}>点击修改num</button>
<button onClick={this.handleSetId}>点击修改id</button>
<button onClick={this.handleSetArr}>点击修改arr</button>
<div>num --- {num}</div>
<div>id --- {id}</div>
<div>arr --- {arr}</div>
}
}
export default HomeStore