zoukankan      html  css  js  c++  java
  • vuex

    今天,将之前用的博客上面的内容全部整理到现在的博客上面,希望看到的大家多多支持

    人人皆知react有redux,vue也就出现了vuex。

    · 为什么要用vuex?
       举个例子:父子组件之间的传值,父组件可以直接通过props向子组件传值,子组件不能直接通过俢改props,更改state向父组件传值,此时vuex出现了。
    · vuex
       话不多说,上代码
     

    //父组件

    <template>

    <div>

    <a href='javascript:;' @click = '$store.state.show'>点我</a>

    <a-digstore></a-digstore>//子组件

    </div>

    </template>

    <script>

    import digstore from './components/dignore;

    export default{

    component:{

    'a-dignore':digstore

    }

    }

    </script>

    //vuex 在src文件夹中 新建一个文件夹 store->index.js

    import vue from 'vue'

    import vuex from 'vuex'

    vue.use(vuex);

    export default new vuex.Store({

    state:({

    show:true

    })

    })

    //相应的在mian.js里面就要将store分离出去

    import vue from 'vue';

    import store from './stroe';

    new Vue({

    el:'#app',

    store,

    router,

    template:'<App/>',

    component:{App}

    }

    //这样就将store分发出去了,所有的组件都能调用$store.state.show.

     vuex->modules 组件多了状态也就多了,所有的状态全都存放在一个store中,不易与后期管理,所以vuex提供了modules。

    //vuex 在src文件夹中 新建一个文件夹 store->index.js

    import vue from 'vue'

    import vuex from 'vuex'

    vue.use(vuex);

    import adignore from './components/adignore';

    import dtgonre from './components/dtgnore';

    export default new vuex.Store({

    modules:{

    dignore:adignore,

    dtg:dtgonre

    }

    })

    components->adignore.js

    export default{

    show:true

    }

    components->dtgonre.js

    export default{

    show.false

    }

    //组件调用

    $store.state.dignore.show

    //前面的方法我们对vuex的依赖仅仅只有$store.state.dignore.show,如果我们想有多个状态依赖,就要用到mutations

    mutations

    export default{

    state:{

    show:true;

    },

    mutations:{

    switch_dialog(state){/监控的上面的state,

    state.show = state.show?true:false;

    }

    }

    这里需要注意的是:

    1. de >mutationsde> 中的方法是不分组件的 , 假如你在 dialog_stroe.js 文件中的定义了
      de >switch_dialogde> 方法 , 在其他文件中的一个 de >switch_dialogde> 方法 , 那么
      de >$store.commit('switch_dialog')de> 会执行所有的 de >switch_dialogde> 方法。
    2. de >mutationsde>里的操作必须是同步的。

    你一定好奇 , 如果在 de >mutationsde> 里执行异步操作会发生什么事情 , 实际上并不会发生什么奇怪的事情 , 只是官方推荐 , 不要在 de >mutationssde> 里执行异步操作而已。

    组件调用:$store.commit('switch_dialog')

    <a href = 'javascript:;' @click = "$store.commit('switch_dialog')">点我</a>

    actions

    export default{

    state:{

    show:true

    },

    mutations:{

    de  >        switch_dialog(state){//这里的state对应着上面这个state
    state.show = state.show?false:true;
    //你还可以在这里执行其他的操作改变state
    }
    },
    actions:{
    switch_dialog(context){//这里的context和我们使用的$store拥有相同的对象和方法
    context.commit('switch_dialog');
    //你还可以在这里触发其他的mutations方法
    },
    }de>

    }

    //组件调用:$store.dispatch('switch_dialog')

  • 相关阅读:
    前端工程化
    前端模块化CommonJS&ES6
    为什么浮点型运算结果会有误差?
    RequestAnimationFrame知多少?
    CSS三栏布局
    秋招面试
    实现Storage
    Angular
    TypeScript
    微服务架构设计模式
  • 原文地址:https://www.cnblogs.com/0915ty/p/9330439.html
Copyright © 2011-2022 走看看