【Vue】需求: 多组件共享数据

[复制链接]
发表于 2024-6-11 13:13:10 | 显示全部楼层 |阅读模式
一、需求

目标:基于脚手架创建项目,构建 vuex 多组件数据共享环境

结果是三个组件共享一份数据:


  • 任意一个组件都可以修改数据
  • 三个组件的数据是同步的

二、创建项目

1.创建项目
  1. vue create vuex-demo
复制代码
  由于现在是在学基础语法,为了目次的办理,先不勾上,但是以后做项目标时候,这两个都是必要勾选上的
  

  
三、创建组件

2.创建三个组件, 目次如下
  1. |-components
  2. |--Son1.vue
  3. |--Son2.vue
  4. |-App.vue
复制代码
3.源代码如下
App.vue在入口组件中引入 Son1 和 Son2 这两个子组件
  1. <template>
  2.   <div id="app">
  3.     <h1>根组件</h1>
  4.     <input type="text">
  5.     <Son1></Son1>
  6.     <hr>
  7.     <Son2></Son2>
  8.   </div>
  9. </template>
  10. <script>
  11. import Son1 from './components/Son1.vue'
  12. import Son2 from './components/Son2.vue'
  13. export default {
  14.   name: 'app',
  15.   data: function () {
  16.     return {
  17.     }
  18.   },
  19.   components: {
  20.     Son1,
  21.     Son2
  22.   }
  23. }
  24. </script>
  25. <style>
  26. #app {
  27.   width: 600px;
  28.   margin: 20px auto;
  29.   border: 3px solid #ccc;
  30.   border-radius: 3px;
  31.   padding: 10px;
  32. }
  33. </style>
复制代码
main.js
  1. import Vue from 'vue'
  2. import App from './App.vue'
  3. Vue.config.productionTip = false
  4. new Vue({
  5.   render: h => h(App)
  6. }).$mount('#app')
复制代码
Son1.vue
  1. <template>
  2.   <div class="box">
  3.     <h2>Son1 子组件</h2>
  4.     从vuex中获取的值: <label></label>
  5.     <br>
  6.     <button>值 + 1</button>
  7.   </div>
  8. </template>
  9. <script>
  10. export default {
  11.   name: 'Son1Com'
  12. }
  13. </script>
  14. <style lang="css" scoped>
  15. .box{
  16.   border: 3px solid #ccc;
  17.   width: 400px;
  18.   padding: 10px;
  19.   margin: 20px;
  20. }
  21. h2 {
  22.   margin-top: 10px;
  23. }
  24. </style>
复制代码
Son2.vue
  1. <template>
  2.   <div class="box">
  3.     <h2>Son2 子组件</h2>
  4.     从vuex中获取的值:<label></label>
  5.     <br />
  6.     <button>值 - 1</button>
  7.   </div>
  8. </template>
  9. <script>
  10. export default {
  11.   name: 'Son2Com'
  12. }
  13. </script>
  14. <style lang="css" scoped>
  15. .box {
  16.   border: 3px solid #ccc;
  17.   width: 400px;
  18.   padding: 10px;
  19.   margin: 20px;
  20. }
  21. h2 {
  22.   margin-top: 10px;
  23. }
  24. </style>
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
继续阅读请点击广告

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

© 2001-2025 Discuz! Team. Powered by Discuz! X3.5

GMT+8, 2025-7-3 02:12 , Processed in 0.086619 second(s), 30 queries 手机版|qidao123.com技术社区-IT企服评测▪应用市场 ( 浙ICP备20004199 )|网站地图

快速回复 返回顶部 返回列表