VUE中父组件向子组件传递数据 props使用

VUE中,子组件是不能直接访问父组件的数据(一般来说,当然如果你要破坏原则也是可以),如下<

<body>  <div id="fathercomponent">
      <ul>
          <li v-for="item in fatherdatas">{{item}}</li> <!--父组件可以访问它自己的数据-->
      </ul>
      <child-component></child-component>
    </div></body>
<script type="text/javascript">
        Vue.component(‘child-component‘, {
           // template:‘<ul><li v-for="item in fatherdatas"></li></ul>‘//子组件不能访问到父组件的数据
        })
        vm = new Vue({
            data: {
                fatherdatas: [1,2,3,4,5]
            }
        }).$mount(‘#fathercomponent‘);
 </script>

上面代码  vm实例挂在了id 为fathercomponent 的DIV中,相当于fathercomponent为一个组件了,这个时候我们在其中定义了一个另一个新组件,这个新定义的组件,和原来的组件,即为父子关系,暂且命名为child-component

我们在vm 中定义的数据 fatherdatas,是父组件fathercomponent中的数据,可以直接在父组件中引用,子组件内部是无法访问到fatherdatas数据的。如果我们需要访问这个fatherdatas需要通过props属性来实现,具体如下

    <div id="fathercomponent">
        <ul>
            <li v-for="item in fatherdatas">{{item}}</li> <!--正确父组件可以访问它自己的数据-->
        </ul>
        <child-component :dataarr="fatherdatas"></child-component> <!--我们将父组件中的fatherdatas数据传给子组件中的dataarr-->
    </div>
  Vue.component(‘child-component‘, {
            props: [‘dataarr‘],//给props添加一个属性,这个属性名字是之前在组件标签中加的
            template: ‘<ul><li v-for="item in dataarr">{{item}}</li></ul>‘ //这个时候父组件中的fatherdatas 已经传递给了当前组件的dataarr,这样就可以访问了

        })
        vm = new Vue({
            data: {
                fatherdatas: [1,2,3,4,5]
            }
        }).$mount(‘#fathercomponent‘);

父组件传递给子组件,是按值传递,因为此时的值是一个对象地址,所以不管是改子组件中的dataarr,还是改父组件fatherdatas,都会影响到另一方,如下

    <div id="fathercomponent">
        <ul>
            <li v-for="item in fatherdatas">{{item}}</li> <!--正确父组件可以访问它自己的数据-->
        </ul>
        <child-component :dataarr="fatherdatas" @father="getfatherdatas"></child-component> <!--我们将父组件中的fatherdatas数据传给子组件中的dataarr-->
    </div>                                      <!--定义一个father事件-->
        Vue.component(‘child-component‘, {
            props: [‘dataarr‘],//给props添加一个属性,这个属性名字是之前在组件标签中加的
            template: ‘<ul><li v-for="item in dataarr">{{item}}</li></ul>‘, //这个时候父组件中的fatherdatas 已经传递给了当前组件的dataarr,这样就可以访问了
            created: function () {
                this.dataarr.push(6);//子组件中的dataarr 添加一个数组元素
                this.$emit(‘father‘);//触发组件的father事件
            }

        })
        vm = new Vue({
            methods: {
                getfatherdatas() {
                    console.log(this.fatherdatas.join(‘,‘));//输出1,2,3,4,5,6
                }
            },
            data: {
                fatherdatas: [1,2,3,4,5]
            }
        }).$mount(‘#fathercomponent‘);

原文地址:https://www.cnblogs.com/fuyun2000/p/10676406.html

时间: 2025-01-10 10:29:30

VUE中父组件向子组件传递数据 props使用的相关文章

Vue中利用$emit实现子组件向父组件通信

Vue中利用$emit实现子组件向父组件通信 父组件 <template> <div> <p>我是父组件</p> <child :isShow="show" @hidechild="hidechild"></child> <button @click="show=true">显示子组件</button> </div> </templa

vue引入iframe的父页面向子页面传递数据

父页面 <template> <div> <el-button @click='btn(index)' :class="{'active':activeName2==index}" v-for="(item,index) in list" :key="index"> {{item.label}} </el-button> <iframe-tab :assid="assid"

iframe实践小结:如何实现父页面向子页面传递数据

思路分析: 子页面获取数据: 补充说明: 需要注意的是:主页面与子页面的sessionStorage不是共享的,而是相互独立,另外postMessage只支持原生js写法,不支持jq获取id 原文地址:https://www.cnblogs.com/hxw1024/p/12046521.html

vue父页面给子页面传递数据

父页面: <template> <div>{{msg}} <Son title='向子文件传递数据' :data='data' :lifemsg ='lifemsg' :num='num'/> <button @click="chageMsg">修改数据</button> <input type="text" v-model="lifemsg" /> </div>

vue组件-#构成组件-父组件向子组件传递数据

组件对于vue来说非常重要,学习学习了基础vue后,再回过头来把组件弄透! 一.概念 组件意味着协同工作,通常父子组件会是这样的关系:组件 A 在它的模版中使用了组件 B . 它们之间必然需要相互通信:父组件要给子组件传递数据,子组件需要将它内部发生的事情告知给父组件. 在 Vue.js 中,父子组件的关系可以总结为 props down, events up . 父组件通过 props 向下传递数据给子组件,子组件通过 events 给父组件发送消息. 看看它们是怎么工作的.        

Vue中,父组件向子组件传值

1:在src/components/child/文件夹下,创建一个名为:child.vue的子组件 2:在父组件中,设置好需要传递的数据 3:在App.vue中引入并注册子组件 4:通过v-bind属性绑定并赋值给子组件 5:子组件通过 props 接收父组件传递过的数据 6:查看 7:总结: 子组件在props中创建一个属性,用以接收父组件传过来的值 父组件中注册子组件 在子组件标签中添加子组件props中创建的属性 把需要传给子组件的值赋给该属性 原文地址:https://www.cnblo

Vue父组件向子组件传递一个动态的值,子组件如何保持实时更新实时更新?

原文:https://blog.csdn.net/zhouweixue_vivi/article/details/78550738 2017年11月16日 14:22:50 zhouweixue_vivi 阅读数:29918 最近用vue做一个新项目,经历了各种折磨,每次遇到问题都想大喊,格劳资上JQuery,氮素肯定是不行的,今天遇到一个小问题,Vue父组件向子组件传递一个动态的值,子组件只能获取初始值,不能实时更新? 这就有点折磨人了,设想的是,父组件发生变化获取数据,动态传递给子组件,子组

VUe.js 父组件向子组件中传值及方法

父组件向子组件中传值 1.  Vue实例可以看做是大的组件,那么在其内部定义的私有组件与这个实例之间就出现了父子组件的对应关系. 2. 父子组件在默认的情况下,子组件是无妨访问到父组件中的数据的,所以要想在子组件中使用父组件的数据的时候,就需要以属性绑定的形式,将父组件的数据传递到子组件中.     3. 通过属性绑定传递来的数据无法再子组件中直接使用,需要在props中重新定义以后才可以使用.例:props:['变量名'].props是一个数组.    4. 子组件中的data数据都是私有,子

Vue父组件向子组件传递方法(自定义方法)并且子组件向父组件传递数据

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" con

vue中父组件向子组件传值(方法)

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>父组件把方法传递给子组件</title> <script src="./vue2.6.9.js"></script> </head> <body> <div id="app&