首页 > 其他分享 >Vue的父传子与子传父

Vue的父传子与子传父

时间:2022-10-24 22:12:22浏览次数:50  
标签:Vue 自定义 num 传父 父传子 组件 数据 emit 事件

Vue的父传子与子传父

子传父

要点:通过自定义事件触发父级方法来进行修改父级数据

总结: 1.在父组件中定义修改数据方法 2.在模板中绑定触发自定义事件的事件 3.调用子组件的时候,使用自定义事件绑定父组件方法

知识点:this.$emit("自定义事件名",自定义事件绑定的事件函数的参数)

步骤:

1.在父组件中定义一个修改数据的方法

new Vue({
el:"#app",
data:{
fatherNum:20
},
components:{
child
},
// 定义修改数据的方法
methods:{
chanFatherNum(val){
this.fatherNum+=val
}
}
})

 

2.在父组件中,通过自定义事件,绑定事件函数的方式,接收这个函数

<div id='app'>
   <p>父组件中的数字是: {{fatherNum}}</p>
   <!-- 2.在父组件中,通过自定义事件,绑定事件函数的方式,接收这个函数 -->
   <!--!!注意!! @fn !! -->
   <child :num="fatherNum" @fn="chanFatherNum"></child>
</div>  
// 单向数据流(父组件不允许子组件直接修改父组件的数据)
let child={
template:'#tmpl',
props:["num"],   //使用props来传递数据 num
data(){
return{
step:20    //写下定义的需要为的数据
}},

修改到父组件的时候有专门的方式 -- 子传父 this.num这种方式只用于获取数值而无法产生改变

 

3.在需要修改到父组件数据的地方,触发这个自定义事件(fn一旦触发,chanFatherNum就会执行)

子级用this.$emit调用父级的方法

//在子级中声明方法
methods:{
hdClick(){
this.$emit("fn",this.step)
}
}}

$emit() 专门用来触发自定义事件

this.$emit("事件名",事件函数的参数)

子组件中

<template id="tmpl">
   <div>
       <p>{{num}}</p>
       <button @click="hdClick">按钮</button>
   </div>
</template>

 

 

父传子

1.在父组件内部,声明这个标签属性,用来接收父组件的数据

let child = {
template:"#tmpl", //指定模板
props:["num"] // 1. 声明标签属性
}

new VUe({
el:"#app",
data:{
fatherNum:20 //父组件的数据
},
components:{
child  //注册子组件
}
})

2在父组件调用子组件的时候,用标签属性 接收 父组件的数据

<div id='app'>
   <child :num="fatherNum"></child>
</div>  

3.在子组件模板中通过标签属性调用数据

// 子组件中准备模板
<template id="tmpl">
   <div>
       <p>{{num}}</p>
   </div>
</template>
 

标签:Vue,自定义,num,传父,父传子,组件,数据,emit,事件
From: https://www.cnblogs.com/Dollom/p/16823192.html

相关文章

  • 【2022.10.24】Vue基础学习(1)
    内容概要1.前端发展介绍2.Vue的快速使用3.差值语法4.指令系统之文本指令5.指令系统之事件指令6.指令系统之属性指令内容详细1前端发展介绍#HTML(5)、CSS(......
  • Vue学习-01
    Vue入门零:前端目前形式前端的发展史HTML(5)、css(3)、JavaScript(ESS、ES6):编写一个个的页面——给后端(PHP、Python、Go、Java)——后端嵌入模板语法——后端渲染完数据——返......
  • vue 笔记12 vue-router路由2 导航守卫
              Vue被创建,挂载,更新时调用函数。      网页标题                    登录......
  • 【2022-10-24】前端Vue框架(一)
    前端发展介绍1.HTML(5)、CSS(3)、JavaScript(ES5、ES6):编写一个个的页面->给后端(PHP、Python、Go、Java)->后端嵌入模板语法->后端渲染完数据->返回数据给前端-......
  • Vue学习(一)
    Vue学习(一)笔记记录学习B站狂神说Vuehttps://www.bilibili.com/video/BV18E411a7mC?p=1&vd_source=6800c7920d132926607a6fa073817ebb1、MVVM1.1、什么是MVVMMVVM(Mo......
  • 【转】VUE 组件注册使用示例
    首先是main.jsimport{createApp}from'vue'importAppfrom'./App.vue'import'./index.css'importSwiperfrom'./components/01.globalReg/Swiper.vue'imp......
  • 安装、更新、卸载vueCli
    一、全局安装vue-cli,在cmd中输入命令:npminstall--globalvue-cli;安装指定版本:npminstall-g@vue/[email protected]二、如果原来已经安装了vue-cli的话需要先卸载原来的安装......
  • vue中keep-alive的使用
    vue中keep-alive的使用什么是keep-alivekeep-alive是vue的内置组件,当它包裹动态组件时,会缓存不活动的组件实例,而不是销毁它们。和transition相似,keep-alive是一个抽象组......
  • [转] VUE 组件的构成
    一个基本的vue组件结构类似这样:<template><h1>这是App.vue根组件</h1><h3>abc--{{username}}</h3><hr/><p>count值是:{{count}}</p><button@c......
  • Vue.nextTick核心原理
    相信大家在写vue项目的时候,一定会发现一个神奇的api,Vue.nextTick。为什么说它神奇呢,那是因为在你做某些操作不生效时,将操作写在Vue.nextTick内,就神奇的生效了。那这是什么......