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

打印 上一主题 下一主题

主题 525|帖子 525|积分 1575

一、需求

目标:基于脚手架创建项目,构建 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企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

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

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

tsx81428

金牌会员
这个人很懒什么都没写!

标签云

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