Mobx 安裝及配置裝飾器

第一步

項(xiàng)目下運(yùn)行 npm run eject, 獲取項(xiàng)目配置

npm run eject

如果此時報錯,例如:


image.png

這是因?yàn)槲覀兪褂媚_手架創(chuàng)建一個項(xiàng)目的時候,自動給我們增加了一個.gitignore文件


image.png

而我們本地卻沒有文件倉庫

這就需要在項(xiàng)目下輸入命令

git add .
git commit -m "隨便"

然后在執(zhí)行 npm run eject,成功后安裝 @babel/plugin-proposal-decorators

npm install --save-dev @babel/plugin-proposal-decorators

修改package.json中的babel配置

"babel": {
    "presets": [
      "react-app"
    ],
    "plugins": [
      [
        "@babel/plugin-proposal-decorators",
        {
          "legacy": true
        }
      ]
    ]
  }

配置成功,

安裝 mobx mobx-react

npm install --save mobx mobx-react

創(chuàng)建store

import {observable,action,computed} from 'mobx'
export default class Store {
    @observable count = 1; // 定義可觀察的state

    @action // 定義改變state的動作
    changeCount(val) {
         this.count ++ 
    }
    @computed //衍生 (計算值與vue計算屬性類似)
    get isAdd () {
        return this.count > 3
    }
    @action//異步
    async getData() {
        await axios.get('XXXXX')
            .then(res => {
                console.log(res);
            })
    }
}

在根組件引入store

import {Provider} from 'mobx-react'
import store from './store/index'


const stores ={ Store: new store() } // 可以有多個store
ReactDom.render(<Provider {...stores}>
    <App />
</Provider>,document.getElementById('root'));

在組件中使用

import {observer,inject} from 'mobx-react'

@inject("Store") // 注入
@observer
export default class Demo extends Component {
    componentDidMount() {
         console.log(this.props.Store);// 獲取store
    }
}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容