首页 > 其他分享 >【Vue3】Vue3中常用的组件传参方式

【Vue3】Vue3中常用的组件传参方式

时间:2023-06-27 09:03:56浏览次数:46  
标签:传参 methods value test state Vue3 组件 name

props/$emit

父传子 (自定义属性 props)

//  父组件代码
<Son :name="test"/>
// 子组件代码
<div>{{ name }}</div>
props: {
    name: {
      type: String,
      default: "default",
    },
}

子传父(自定义this.$emit)

// 子组件代码
<button @click="handleClick">子组件按钮</button>
  methods: {
    handleClick() {
      this.$emit("handleSon", "test");
    },
  },
// 父组件代码
<Son  @handleSon="sonFunction" />
  methods: {
    sonFunction(value) {
      this.text = value;
    },
 },

ref

父传子

// 父组件
<button @click="fatherButton">父按钮</button>
<Son ref="sonRef" />
 methods: {
    fatherButton() {
      // 可以拿到子组件所有的信息
      console.log(this.$refs.sonRef)
      this.$refs.sonRef.sonFunciton("test");
    },
},
// 子组件
<div>子组件{{ name }}</div>
 methods: {
    sonFunciton(value) {
      console.log(value);
      this.name = value;
    },
},

子传父(如果子组件是公共组件,需判断父组件是否具有该方法)

// 父组件
fatherFunction(value) {
    this.text = value;
},
// 子组件
<button @click="sonButton">子组件按钮</button>
 sonButton() {
       // this.$parent  拿到父组件所有的信息 跟ref类似
      this.$parent.fatherFunction("test");
},

Vuex数据共享

// 注册代码
const store = new Vue.Store({
  state:{
    count: 100
  },
  mutations: {
    addCount(state, val = 1) {
      state.count += val;
    },
    subCount(state, val = 1) {
      state.count -= val;
    }
  }
})

// 组件调用
this.$store.commit('addCount');  // 加 1
this.$store.commit('subCount');  // 减 1

依赖注入provide/Inject

父组件
  provide: {
    sonMsg: "test",
  },

下级组件
<div @click="toVal">子组件{{ sonMsg}}</div>

inject: ["sonmsg"]

标签:传参,methods,value,test,state,Vue3,组件,name
From: https://www.cnblogs.com/xhltk316/p/17507695.html

相关文章

  • 【Vue】Vue3+Vite 实现 SVG 组件自动加载 icons 目录下所有文件
    1.安装依赖插件vite-plugin-svg-iconsvite-plugin-svg-icons用于生成svg雪碧图。特点:1.预加载在项目运行时就生成所有图标,只需操作一次dom2.高性能内置缓存,仅当文件被修改时才会重新生成vite-plugin-svg-icons官方文档pnpmaddvite-plugin-svg-icons2.安装......
  • 【TypeScript】Element 组件导入在 TypeScript 5 报错:模块 ““element-plus““ 没有
    报错现象解决方法typescript5.0版本升级,使用了compilerOptions.moduleResolution:"bundler"的模块编译选项。moduleResolution:模块解析策略,是指编译器在查找导入模块内容时所遵循的流程因此目前要解决报错,我们只需要修改tsconfig.json下的为node就行。/*Bundle......
  • vue3.0之axios使用
    //导入包importaxiosfrom"axios";//使用示例axios.post('发送请求地址',{携带变量key1:变量value1,携带变量key2:变量value2,}).then(response=>{//后端返回给前端的数据都在response.data里,可以通过“response.data.键”进行调用if(response.data.cod......
  • vue3.0之emit的使用
    主要用于跨组件传输数据,emit可以调用父组件中的自定义函数。使用方法letemit=defineEmits(['父组件自定义函数1','父组件自定义函数2','...'])//调用父组件自定义函数的执行emit('父组件自定义函数')主要逻辑在父组件中定义一个自定义函数<template><Loginv-if......
  • vue3.0之cookies的操作
    安装npminstallvue-cookiesimportVueCookiesfrom'vue-cookies'constcookies=VueCookiescookies.set('key值','字符串或变量','7d')//7d代表时间,存放7天cookies.get('key值')//取出key值对应的数据cookies.remove('ke......
  • form组件
    form组件在我们日常填写注册信息或者报名信息时,所访问的网页,在输入信息有错误时就显示一些后端传入的提示。我们当然可以通过ajax绑定事件来从后端取一些提示,但是表单是个整体,如果每个输入框都需要我们完整的写一轮这么一套逻辑,这就太麻烦了,所以针对表单标签,django提供了form组......
  • 【HarmonyOS】低代码项目中设置拖拽组件背景色透明度问题
    【关键字】HarmonyOS、低代码开发、拖拽组件、背景色透明度【问题描述】使用拖拽式组件开发HarmonyOS项目时,想给组件设置背景色透明度,有如下几个问题:1)使用DevEcoStudio自带的颜色选择器,无法设置透明度,只能手动输入2)在子模块library中给组件手动输入#ff000000格式背景色,在主模块ent......
  • VUE3学习笔记
    VUE3出现已经很长时间了,由于工作比较忙,项目比较紧,现在才看,已经晚于很多人了。这是vue3学习笔记,边学边写。1,项目创建可以使用git下载:winptyvue.cmdcreatehello-world使用之后会让你选择vue2还是3可以直接node创建:vuecreatedemo2,组件传值多了个类型校验,传值......
  • Vite 组件化开发
    什么是Vite?Vite是一个基于ES模块的构建工具,旨在提供快速、轻量级的开发体验。与传统的打包工具不同,Vite利用浏览器原生支持的模块加载能力,实现了更快的冷启动和热模块替换。它支持Vue.js、React和其他前端框架,并且具有开发服务器和优化的构建配置,可以大大提升前端项目的开......
  • Vue项目难点解析---分页器静态组件【原理】
    分页器:为什么使用分页器?答案:按需加载为啥不直接使用ElementUI啥的第三方组件呢?答案:掌握自定义分页功能,更好的自定义分页规则呢,实现功能。实现原理:分页器实现条件?知道当前第几页:pageNo知道分页器一共需要展示多少条数据:total知道每一页需要展示数据个数:pageSize知道连续的页码数......