vue中父组件向子组件传值,子组件向父组件传值,简洁易懂

Vue中父组件传值到子组件

Vue中父组件传值分为两步:
一、父组件中代码中,使用属性绑定向子组件传递数据,

如图, 其中,:titles="title"就是在将父组件的title属性值,传递到子组件所绑定的titles属性中,这时候,子组件就有了一个带有值的titles属性了

复制代码
<template>
  <div class="parent">
    <h1>我是父组件</h1>
    <childVue :titles="title" :contents="content"></childVue>
  </div>
</template>

<script>
import childVue from './child.vue'
export default {
  name: 'parant',
  components:{
    childVue
  },
  data() {
    return {
      content: "我是父组件传过来的内容"
    };
  }
}
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<style lang="scss" scoped>
.parent{
  width: 500px;
  height: 500px;
  background: rgb(146, 133, 133);
  
}
</style>

二、子组件需要接收传过来的属性值

如下代码,子组件需要使用props属性去接受刚刚父组件传递过来的属性titles和contents,需要定义一下属性类型哦

复制代码
<template>
  <div class="child">
    <h2>我是子组件</h2>
    <h4>{{titles}}</h4>
    <h4>{{contents}}</h4>
  </div>
</template>

<script>
export default {
  name: 'helloChild',
  props: {
    titles: String,
    contents: String
  }
}
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
.child{
  width: 400px;
  height: 300px;
  background: rgb(157, 117, 117);
}
</style>

总结一下:

父组件中引入子组件、注册子组件,tempalte中使用子组件; import 、components、

子组件: props中创建一个属性,接受父组件传的值;

在template中使用 {{contents}};

父组件中的 , :title与子组件中prop添加的属性名称要一致;

="title"与父组件中data数据中的title名称要一致;

props绑定的写法也可以写成这样的形式

复制代码
 props: {
    title: {
      type: String,  // [String, Number],
      default: 1
    }
  }

Vue中子组件传值到父组件

子组件传值到父组件也有两步。
一:子组件通过$emit触发一个自定义事件,传递属性出去

如下,通过按钮(也可以其它方式,能触发emit即可),触发emit方法,传递datas的值出去

复制代码
<template>
  <div>
    <h1>children</h1>
      <button @click="sendTOParent">向父组件传值</button>
  </div>
</template>>
<script>
export default {
  data() {
    return {
      datas: "子组件中的信息"
    };
  },
  methods:{
        sendTOParent(){
            this.$emit('listenToChildEvent',this.data)
        }
    }
};
</script>>

2.在父组件中引用子组件的标签中,使用v-on监听该自定义事件并添加一个响应该事件的处理方法

复制代码
<template>
  <div>
    <h1>我是父组件</h1>
    <children v-on:listenToChildEvent = 'showMsgfromChild'></children>
  </div>
</template>>
<script>
import Children from "./Children";
export default {
  data() {
    return {
    };
  },
   methods:{
        showMsgfromChild(data){
            console.log(data)
        }
    },
   components: {
    Children
  },
};
</script>

总结:

子组件通过$emit传递参数出去,在父组件中引用子组件的标签中,使用v-on监听该自定义事件并添加一个响应该事件的处理方法

相关推荐
童先生1 小时前
Nginx + Vue/React 前端 + API:防止路径混淆漏洞与跨域问题实战分享
前端·vue.js·nginx
黑夜照亮前行的路2 小时前
JavaScript 性能优化实战技术指南
javascript·性能优化
Stringzhua3 小时前
Vue数据的变更操作与表单数据的收集【6】
前端·javascript·vue.js
万少4 小时前
可可图片编辑 HarmonyOS 上架应用分享
前端·harmonyos
你的人类朋友4 小时前
git常见操作整理(持续更新)
前端·git·后端
无羡仙4 小时前
Webpack 核心实战:从零搭建支持热更新与 Babel 转译的现代前端环境
前端·webpack·前端框架
乐~~~4 小时前
el-date-picker type=daterange 日期范围限制
javascript·vue.js·elementui
你的人类朋友4 小时前
git中的Fast-Forward是什么?
前端·git·后端
初遇你时动了情4 小时前
uniapp vue3 ts自定义底部 tabbar菜单
前端·javascript·uni-app
JarvanMo5 小时前
天塌了?Flutter工程总监跑去苹果了?
前端