美文网首页
Mobx 安装及配置装饰器

Mobx 安装及配置装饰器

作者: 奋斗的小蜗牛yyl | 来源:发表于2019-07-09 10:46 被阅读0次

    第一步

    项目下运行 npm run eject, 获取项目配置

    npm run eject
    

    如果此时报错,例如:


    image.png

    这是因为我们使用脚手架创建一个项目的时候,自动给我们增加了一个.gitignore文件


    image.png
    而我们本地却没有文件仓库

    这就需要在项目下输入命令

    git add .
    git commit -m "随便"
    

    然后在执行 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
    

    创建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
        }
    }
    
    

    相关文章

      网友评论

          本文标题:Mobx 安装及配置装饰器

          本文链接:https://www.haomeiwen.com/subject/qcaehctx.html