首页 > 其他分享 >备忘录 3.Vue2,3 父子组件组件传值的方法(1)

备忘录 3.Vue2,3 父子组件组件传值的方法(1)

时间:2024-03-30 20:59:30浏览次数:33  
标签:vue const Son Vue2 组件 data 传值

1. 简介

        在初次接触组件传值时总是忘了其中的细节,我会在这个文章中简单的写一下在vue2,3中父子组件最常用的传值方式,便于我开发中查阅

2. Vue2中父子组件传值方法

2.1父组件向子组件传值

Father.vue

<template>  
  <div>  
    <child-component :parent-message="parentMessage"/>
  </div>  
</template>  
  
<script>  
import ChildComponent from './components/Son.vue';  
  
export default {  
  components: {  
    ChildComponent  
  },  
  data() {  
    return {  
      parentMessage: '这是来自父组件的消息',   
    };  
  },  
};  
</script>
Son.vue

<template>
  <div>
    <p>{{ parentMessage }}</p>
  </div>
</template>

<script>
export default {
  props: {
    parentMessage: {
      type: String,
      required: true
    },
  },
  mounted(){
    console.log(this.parentMessage);
  }
};  
</script>

2.2子组件像父组件传值

Father.vue

<template>  
  <div>  
    <h2>父组件</h2>  
    <p>从子组件接收到的数据: {{ messageFromChild }}</p>  
    <child-component @child-event="handleChildEvent"/>
  </div>  
</template>  
  
<script>  
import ChildComponent from './components/Son.vue';  
  
export default {  
  components: {  
    ChildComponent  
  },  
  data() {  
    return {  
      parentMessage: '这是来自父组件的消息',  
      messageFromChild: ''  
    };  
  },  
  methods: {  
    handleChildEvent(message) {  
      this.messageFromChild = message;  
    }  
  }  
};  
</script>
<template>
  <div>
    <h3>子组件</h3>
    <button @click="sendDataToParent">发送数据给父组件</button>
  </div>
</template>

<script>
export default {
  methods: {
    sendDataToParent() {
        //自定义事件
      this.$emit('child-event', '这是来自子组件的消息');
    }
  },
};  
</script>

3.Vue3中父子组件传值方法

3.1 父组件向子组件传值

Father.vue

<template>
  <Son :data="data"></Son>
   <!--  :data可变 子组件也相应改变  -->
</template>

<script setup>
  import Son from './components/Son.vue';
  let data = '父=>子'
</script>
Son.vue


<template>
  <p :data="data">{{props.data}}</p>
  <!-- 属性绑定的值需与父组件相同 -->
</template>

<script setup>
//使用defineProps方法接收父组件的值
const props = defineProps({
  data: {
    type: String,
    required: true
  }
})
</script>

3.2 子组件向父组件传值

Father.vue

<template>  
  <Son @handleSizeChange="getSon"/>  
  <!-- 使用子组件的自定义事件 -->
</template>  
  
<script setup>  
import Son from './components/Son.vue';   
  
const getSon = (data) => {    
  console.log('子=>父:', data);  
     
};  
</script>
Son.vue

<template>  
  <button @click="handleSizeChange">子组件传值</button>  
</template>  
  
<script setup>  
import { ref, defineEmits } from 'vue';   
//创建自定义事件
const emit = defineEmits(['handleSizeChange']);  
  
const handleSizeChange = () => {  
  emit('handleSizeChange', data);
  //  data为需要传的数据 
};  
</script>  

4. React父子组件传值

4.1父组件向子组件传值

Father.jsx

import React from 'react';  
import Son from './Son';  
  
const ParentComponent = () => {  
  const messageFromParent ='这是来自父组件的消息' 
  
  return (  
    <div>  
      <ChildComponent fatherData={messageFromParent} />  
    </div>  
  );  
};  
  
export default ParentComponent;
Son.jsx

import React from 'react';  
  
const ChildComponent = (props) => {  
console.log(props.fatherData)
  return (
    <div>  
      <h3>子组件</h3>  
       <p>{props.fatherData}</p>
    </div>  
  );  
};  
  
export default ChildComponent;

4.2子组件向父组件传值

Father.jsx 

import React, { useState } from "react";  
import ChildComponent from "./Son";  
  
const ParentComponent = () => {  
  const [messageFromChild, setMessageFromChild] = useState('');
  const getSon = (data) => {  
    console.log(data); 
    setMessageFromChild(data);
  };  
  
  return (  
    <div>  
      <h2>父组件</h2>  
      <p>子组件发送过来的数据: {messageFromChild}</p>
      <ChildComponent onGetSon={getSon} />  
    </div>  
  );  
};  
  
export default ParentComponent;
Son.jsx

import React from 'react';  
  
const ChildComponent = ({ onGetSon }) => {  
  const handleClick = () => {  
    onGetSon('子=>父');
  };  
  
  return (  
    <div>  
      <button onClick={handleClick}>发送给父组件</button>  
    </div>  
  );  
};  
  
export default ChildComponent;

标签:vue,const,Son,Vue2,组件,data,传值
From: https://blog.csdn.net/GXSmile/article/details/137180663

相关文章

  • 微信小程序引导组件【添加到我的小程序】
    微信小程序引导组件,点击按钮,弹窗引导用户【添加到我的小程序】源代码https://ext.dcloud.net.cn/plugin?id=17303......
  • 鸿蒙HarmonyOS实战-ArkUI组件(Swiper)
    ......
  • 【记录】使用python图形库自定义位置组件的技术
    目录使用的技术展示一下这个效果结语使用的技术使用自定义位置的技术可以通过place方法来实现。这里是如何使用这种技术的一般步骤:创建一个Label或Button等组件,并设置相关属性(例如文本、图像、背景色等)。使用place方法设置组件的位置,通过指定x和y参数来调整组件在窗口......
  • yii2请求组件
    yii2请求组件应用的请求是用yii\web\Request对象来表示的请求参数$request=Yii::$app->request;$get=$request->get();//等价于:$get=$_GET;$id=$request->get('id');//等价于:$id=isset($_GET['id'])?$_GET['id']:null;$i......
  • Vue怎么使用Upload组件进行图片上传到阿里云OSS,并
    基于前端用Vue2后端用Springboot进行讲解一、创建阿里云OSS       对象存储OSS_云存储服务_企业数据管理_存储-阿里云(aliyun.com),打开网站进行开通    开通后我们来到Bucket列表,创建Bucket            创建过程:后面就默认就行了   ......
  • Vue父组件拿到接口的数据,并把数据传给子组件的问题;同时,父组件数据更新,子组件同样拿到
    参考文档:https://blog.csdn.net/qq_33723676/article/details/128143924问题一:父组件向子组件传值,子组件拿到的是空数据。在vue中,有时需要在父组件页面调用接口时,并把数据传给子组件。一般的做法中,子组件拿不到父组件传过来的值。原因是什么捏???原因就是:父组件跟子组件获取数据是......
  • 鸿蒙HarmonyOS实战-ArkUI组件(Grid/GridItem)
    ......
  • 客快物流大数据项目(八十五):实时OLAP分析需求 一些组件的特点 一般有用 看1
    ​实时OLAP分析需求一、​​​​​​​背景介绍在之前的文章学习了离线数仓的构建,但是离线数仓的最大问题即:慢,数据无法实时的通过可视化页面展示出来,通常离线数仓分析的是“T+1”的数据,针对于时效性要求比较高的场景,则无法满足需求,例如:快速实时返回“分组+聚合计算+排序聚合指标......
  • 第四章 页面组件课后习题
    二.操作题2.使用相应组件,完成"书单"页面。//.wxml<viewstyle="text-align:left">←书单</view><imagesrc="../image/shudan1.jpg"style="width:100%"></image><viewid="qian"><imagesrc="......
  • 使用vue2实现在线创建组件的功能
    前言我们使用vue2构建了一个项目,项目有个需求:用户可以在线创建vue组件,创建后的组件可以动态编译,项目无需重新部署,就可以在表单等位置引入使用组件。实现记录引用vue的esm包项目中引入vue的代码,原来是importVuefrom'vue'改为importVuefrom'vue/dist/vue.esm'vue.c......