048_末晨曦Vue技术_处理边界情况之使用$root访问根实例

处理边界情况之使用$root访问根实例

点击打开视频教程

在每个 new Vue 实例的子组件中,其根实例可以通过 $root property 进行访问。

例如,在这个根实例中:

src\main.js

import Vue from 'vue'
import App from './App.vue'
//引入ElementUI组件库
import ElementUI from 'element-ui';
//引入ElementUI全部样式
import 'element-ui/lib/theme-chalk/index.css';

// import {Plugin1,Plugin2} from './plugins/plugins.js'

Vue.config.productionTip = false

//使用ElementUI
Vue.use(ElementUI)

// Vue.use(Plugin1,'参数1')

// Vue.use(Plugin2,'参数2')

new Vue({

  data: {
    foo: 1
  },
  computed: {
    bar: function () {
      return '满天星辰不及你'
    }
  },
  methods: {
    baz: function () { 
      return '满天星辰不及你吖'
    }
  },

  render: h => h(App),
}).$mount('#app')

所有的子组件都可以将这个实例作为一个全局 store 来访问或使用。

<template>
  <div id="app">
    <!-- 获取根组件的数据 -->
    {{ $root.foo }}
    <!-- 访问根组件的计算属性 -->
    {{ $root.bar }}
    <button @click="change">改变</button>
  </div>
</template>

<script>
export default {
  name: 'App',
  data(){
    return {

    } 
  },
  mounted(){
    
  },
  computed:{
    
  },
  methods:{
    // 写入根组件的数据
    change(){
      this.$root.foo = '末晨曦吖'
      
      // 调用根组件的方法
      let name = this.$root.baz()
      console.log(name);
    }
  }
}
</script>

<style scoped>
 
</style>

注意:对于 demo 或非常小型的有少量组件的应用来说这是很方便的。不过这个模式扩展到中大型应用来说就不然了。因此在绝大多数情况下,我们强烈推荐使用 Vuex 来管理应用的状态。

posted @ 2022-08-17 09:20  程序猿咬棒棒糖拽天下  阅读(123)  评论(0编辑  收藏  举报