vue3组件之间传值通讯

05-09 1053阅读

Vue 3 提供了多种组件间传值和通讯的方式。以下将以长博客的形式,详细解释这些方法及其应用场景。

vue3组件之间传值通讯
(图片来源网络,侵删)

1. props 向下传值

props 是 Vue 中用于父组件向子组件传递数据的方式。在子组件中,我们可以使用 props 来接收父组件传递过来的数据。

父组件

  
    
      
    
  
  
  
import ChildComponent from './ChildComponent.vue';  
  
export default {  
  components: {  
    ChildComponent  
  },  
  data() {  
    return {  
      parentMessage: 'Hello from Parent!'  
    };  
  }  
}  

子组件

  
  {{ message }}  
  
  
  
export default {  
  props: {  
    message: {  
      type: String,  
      required: true  
    }  
  }  
}  

2. 事件(Event)向上传值

当子组件需要向父组件传递数据时,可以使用自定义事件(Custom Event)。在子组件中,使用 $emit 方法触发事件并传递数据,父组件通过监听这个事件来获取数据。

子组件

  
  Notify Parent  
  
  
  
export default {  
  methods: {  
    notifyParent() {  
      this.$emit('child-event', 'Hello from Child!');  
    }  
  }  
}  

父组件

  
    
      
    
  
  
  
import ChildComponent from './ChildComponent.vue';  
  
export default {  
  components: {  
    ChildComponent  
  },  
  methods: {  
    handleChildEvent(message) {  
      console.log(message); // 输出 'Hello from Child!'  
    }  
  }  
}  

3. Vuex 状态管理

对于大型应用或需要全局共享数据的情况,可以使用 Vuex 进行状态管理。Vuex 提供了集中存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。

安装和配置 Vuex

npm install vuex

创建 Vuex Store

// store.js  
import { createStore } from 'vuex';  
  
export default createStore({  
  state: {  
    count: 0  
  },  
  mutations: {  
    increment(state) {  
      state.count++;  
    }  
  }  
});

在 Vue 应用中使用 Vuex

import { createApp } from 'vue';  
import App from './App.vue';  
import store from './store';  
  
const app = createApp(App);  
app.use(store);  
app.mount('#app');

在组件中使用 Vuex

  
  {{ count }}  
  Increment  
  
  
  
export default {  
  computed: {  
    count() {  
      return this.$store.state.count;  
    }  
  },  
  methods: {  
    increment() {  
      this.$store.commit('increment');  
    }  
  }  
}  

希望 以上对您有所帮助

VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]