美文网首页
vuex 原理解析

vuex 原理解析

作者: Cue_Ada | 来源:发表于2020-12-04 15:17 被阅读0次

    vuex的原理关键:使用vue实例管理状态

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
      <title>vuex 原理解析--源码精简写法</title>
    </head>
    <body>
      <div id="root">{{data}}</div>
      <div id="root2">{{data2}}</div>
      <div id="root3">
        <button @click="change">change</button>
      </div>
      <script>
        function regiterPlugiin(Vue){
          const vuex = {} // 模拟vue全家桶的vuex
          vuex._vm = new Vue({ // 没有挂载在任何dom 上的vue实例
            data:{
              message:'hello vue.js'
            }
          })
    
          vuex.state = vuex.vm //vue实例
          vuex.mutation = {
            setMessage(value) {
              vuex.state.message = value
            }
          }
    
          function init(){
            this.$store = vuex
          }
    
          Vue.mixin({    // 全局mixin,对所有的vue实例创建的时候,执行init
            beforeCreate:init
          })
        }
        Vue.use(regiterPlugiin)  //加载插件
    
        new Vue({
          el:'#root',
          computed:{
            data(){
              return this.$store.state.message
            }
          }
        })
        new Vue({
          el:'#root2',
          computed:{
            data2(){
              return this.$store.state.message
            }
          }
        })
        new Vue({
          el:'#root3',
          methods:{
            cahnge(){
              const newValue = this.$store.state.message + '.'
              this.$store.mutations.setMessage(newValue)
            }
          }
        })
      </script>
    
    </body>
    </html>
    

    相关文章

      网友评论

          本文标题:vuex 原理解析

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