tsx81428 发表于 2024-6-11 13:13:10

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

一、需求

目标:基于脚手架创建项目,构建 vuex 多组件数据共享环境
https://img-blog.csdnimg.cn/img_convert/379cad9e405eb78b4e71f8c74b8e02c7.png
结果是三个组件共享一份数据:


[*]任意一个组件都可以修改数据
[*]三个组件的数据是同步的
二、创建项目

1.创建项目
vue create vuex-demo
   由于现在是在学基础语法,为了目次的办理,先不勾上,但是以后做项目标时候,这两个都是必要勾选上的
https://img-blog.csdnimg.cn/img_convert/67fa996a5a7aac5b64f9241f9823e1fd.png
三、创建组件

2.创建三个组件, 目次如下
|-components
|--Son1.vue
|--Son2.vue
|-App.vue
3.源代码如下
App.vue在入口组件中引入 Son1 和 Son2 这两个子组件
<template>
<div id="app">
    <h1>根组件</h1>
    <input type="text">
    <Son1></Son1>
    <hr>
    <Son2></Son2>
</div>
</template>

<script>
import Son1 from './components/Son1.vue'
import Son2 from './components/Son2.vue'

export default {
name: 'app',
data: function () {
    return {

    }
},
components: {
    Son1,
    Son2
}
}
</script>

<style>
#app {
width: 600px;
margin: 20px auto;
border: 3px solid #ccc;
border-radius: 3px;
padding: 10px;
}
</style>

main.js
import Vue from 'vue'
import App from './App.vue'

Vue.config.productionTip = false

new Vue({
render: h => h(App)
}).$mount('#app')
Son1.vue
<template>
<div class="box">
    <h2>Son1 子组件</h2>
    从vuex中获取的值: <label></label>
    <br>
    <button>值 + 1</button>
</div>
</template>

<script>
export default {
name: 'Son1Com'
}
</script>

<style lang="css" scoped>
.box{
border: 3px solid #ccc;
width: 400px;
padding: 10px;
margin: 20px;
}
h2 {
margin-top: 10px;
}
</style>

Son2.vue
<template>
<div class="box">
    <h2>Son2 子组件</h2>
    从vuex中获取的值:<label></label>
    <br />
    <button>值 - 1</button>
</div>
</template>

<script>
export default {
name: 'Son2Com'
}
</script>

<style lang="css" scoped>
.box {
border: 3px solid #ccc;
width: 400px;
padding: 10px;
margin: 20px;
}
h2 {
margin-top: 10px;
}
</style>

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 【Vue】需求: 多组件共享数据