前端Vue入门-day04-用vue实现组件通信

这篇具有很好参考价值的文章主要介绍了前端Vue入门-day04-用vue实现组件通信。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹)

前端Vue入门-day04-用vue实现组件通信,# 前端vue入门,前端,vue.js,javascript,前端框架,开发语言

目录

组件的三大组成部分

注意点说明

组件的样式冲突 scoped

data 是一个函数

组件通信

什么是组件通信

不同的组件关系 和 组件通信方案分类  

父子通信流程图: 

父 → 子

子 → 父 

什么是 prop

props 校验 

prop & data、单向数据流

进阶语法

v-model 原理

表单类组件封装 & v-model 简化代码  

.sync 修饰符  

ref 和 $refs  


组件的三大组成部分

注意点说明

前端Vue入门-day04-用vue实现组件通信,# 前端vue入门,前端,vue.js,javascript,前端框架,开发语言

组件的样式冲突 scoped

默认情况 :写在组件中的样式会 全局生效 → 因此很容易造成多个组件之间的样式冲突问题。
1. 全局样式 : 默认组件中的样式会作用到全局
2. 局部样式 : 可以给组件加上 scoped 属性, 可以让样式只作用于当前组件
scoped原理?
1. 当前组件内标签都被添加 data-v-hash值 的属性 前端Vue入门-day04-用vue实现组件通信,# 前端vue入门,前端,vue.js,javascript,前端框架,开发语言
2. css选择器都被添加 [data-v-hash值] 的属性选择器 前端Vue入门-day04-用vue实现组件通信,# 前端vue入门,前端,vue.js,javascript,前端框架,开发语言
最终效果: 必须是当前组件的元素 , 才会有这个自定义属性, 才会被这个样式作用到

data 是一个函数

一个组件的 data 选项必须是一个 函数 。→ 保证每个组件实例,维护 独立 的一份数据对象。
每次创建新的组件实例,都会新执行一次 data 函数,得到一个新对象。

前端Vue入门-day04-用vue实现组件通信,# 前端vue入门,前端,vue.js,javascript,前端框架,开发语言

<template>
  <div class="base-count">
    <button @click="count--">-</button>
    <span>{{ count }}</span>
    <button @click="count++">+</button>
  </div>
</template>

<script>
export default {
  data() {
    console.log('函数执行了')
    return {
      count: 100,
    }
  },
}
</script>

<style>
.base-count {
  margin: 20px;
}
</style>
<template>
  <div class="app">
    <baseCount></baseCount>
  </div>
</template>

<script>
import baseCount from './components/BaseCount'
export default {
  components: {
    baseCount,
  },
}
</script>

<style>
</style>

组件通信

什么是组件通信

组件通信, 就是指 组件与组件 之间的数据传递

组件的数据是 独立 的,无法直接访问其他组件的数据。
想用其他组件的数据 → 组件通信
前端Vue入门-day04-用vue实现组件通信,# 前端vue入门,前端,vue.js,javascript,前端框架,开发语言

不同的组件关系 和 组件通信方案分类  

组件关系分类:
1. 父子关系
2. 非父子关系 前端Vue入门-day04-用vue实现组件通信,# 前端vue入门,前端,vue.js,javascript,前端框架,开发语言

组件通信解决方案:  

前端Vue入门-day04-用vue实现组件通信,# 前端vue入门,前端,vue.js,javascript,前端框架,开发语言

父子通信流程图: 

1. 父组件通过 props 将数据传递给子组件
2. 子组件利用 $emit 通知父组件修改更新

前端Vue入门-day04-用vue实现组件通信,# 前端vue入门,前端,vue.js,javascript,前端框架,开发语言

父 → 子

父组件通过 props 将数据传递给子组件

前端Vue入门-day04-用vue实现组件通信,# 前端vue入门,前端,vue.js,javascript,前端框架,开发语言

子 → 父 

子组件利用 $emit 通知父组件,进行修改更新

前端Vue入门-day04-用vue实现组件通信,# 前端vue入门,前端,vue.js,javascript,前端框架,开发语言

什么是 prop

Prop 定义: 组件上 注册的一些 自定义属性
Prop 作用:向子组件传递数据
特点:
        可以 传递 任意数量 的prop
        可以 传递 任意类型 的prop

props 校验 

作用: 为组件的 prop 指定 验证要求 ,不符合要求,控制台就会有 错误提示 → 帮助开发者,快速发现错误
语法:
① 类型校验
② 非空校验
③ 默认值
④ 自定义校验

前端Vue入门-day04-用vue实现组件通信,# 前端vue入门,前端,vue.js,javascript,前端框架,开发语言

前端Vue入门-day04-用vue实现组件通信,# 前端vue入门,前端,vue.js,javascript,前端框架,开发语言

prop & data、单向数据流

共同点:都可以给组件提供数据。
区别:
data 的数据是 自己 的 → 随便改
prop 的数据是 外部 的 → 不能直接改,要遵循 单向数据流
单向数据流:父级 prop 的数据更新,会向下流动,影响子组件。这个数据流动是单向的。

进阶语法

v-model 原理

原理: v-model本质上是一个 语法糖 。例如应用在 输入框上,就是 value属性 input事件 的合写。
作用: 提供数据的双向绑定
数据变,视图跟着变 :value
视图变,数据跟着变 @input
注意: $event 用于在模板中,获取事件的形参 前端Vue入门-day04-用vue实现组件通信,# 前端vue入门,前端,vue.js,javascript,前端框架,开发语言

表单类组件封装 & v-model 简化代码  

1. 表单类组件 封装→ 实现 子组件 和 父组件数据 的双向绑定

父传子: 数据 应该是父组件 props 传递 过来的, 拆解 v-model 绑定数据
子传父: 监听输入,子传父传值给父组件修改 前端Vue入门-day04-用vue实现组件通信,# 前端vue入门,前端,vue.js,javascript,前端框架,开发语言

2. 父组件 v-model 简化代码,实现 子组件 和 父组件数据 双向绑定 文章来源地址https://www.toymoban.com/news/detail-613081.html

① 子组件中:props 通过 value 接收 ,事件触发 input
② 父组件中: v-model 给组件直接绑数据 ( :value + @input ) 前端Vue入门-day04-用vue实现组件通信,# 前端vue入门,前端,vue.js,javascript,前端框架,开发语言

.sync 修饰符  

作用: 可以实现 子组件 父组件数据 双向绑定 ,简化代码
特点: prop属性名,可以 自定义 ,非固定为 value
场景: 封装弹框类的基础组件, visible属性 true显示 false隐藏
本质: 就是 :属性名 @update:属性名 合写 前端Vue入门-day04-用vue实现组件通信,# 前端vue入门,前端,vue.js,javascript,前端框架,开发语言

ref 和 $refs  

作用: 利用 ref 和 $refs 可以用于 获取 dom 元素, 组件实例
特点: 查找范围 → 当前组件内 (更精确稳定)
① 获取 dom:
        1. 目标标签 – 添加 ref 属性
<div ref="chartRef">我是渲染图表的容器</div>
        2. 恰当时机, 通过 this.$refs.xxx, 获取目标标签
mounted () {
console.log(this.$refs.chartRef)
},
② 获取组件:
        1. 目标组件 – 添加 ref 属性
<BaseForm ref="baseForm"></BaseForm>
        2. 恰当时机, 通过 this.$refs.xxx, 获取目标组件,就可以 调用组件对象里面的方法
this.$refs.baseForm.组件方法()

到了这里,关于前端Vue入门-day04-用vue实现组件通信的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vue04---计算属性/监听(侦听)属性/Vue生命周期/组件介绍和使用/组件间通信/ref属性

    # 1 计算属性是基于它们的依赖变量进行缓存的 # 2 计算属性只有在它的相关依赖变量发生改变时才会重新求值,否则不会变(函数只要页面变化,就会重新运算) # 3 计算属性就像Python中的property,可以把方法/函数伪装成属性 # 4 计算属性,必须有返回值 基本使用 重写过滤案

    2024年02月08日
    浏览(32)
  • 前端Vue入门-day02

    (创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 指令补充 指令修饰符 v-bind 对于样式控制的增强  操作class 案例:京东秒杀 tab 导航高亮 操作style  v-model 应用于其他表单元素  computed 计算属性 基础语法 computed 计算属

    2024年02月13日
    浏览(34)
  • 前端Vue入门-day01-初识vue与vue指令

    -(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 Vue 快速上手 Vue 概念 创建实例   插值表达式 响应式特性 开发者工具  Vue 指令  v-show  v-if  v-else  v-else-if  v-on v-bind  v-for key  v-model  概念:Vue 是一个用于 构建用户

    2024年02月09日
    浏览(36)
  • 前端Vue入门-day07-Vuex入门

    (创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 自定义创建项目 vuex概述 构建 vuex [多组件数据共享] 环境  创建一个空仓库 state 状态 1. 提供数据: 2. 使用数据: mutations  辅助函数 - mapMutations actions 辅助函数 - mapAc

    2024年02月14日
    浏览(26)
  • Web前端 ---- 【Vue】(组件)父子组件之间的通信一文带你了解

    目录 前言 父组件传子组件 ---- props 给要传递数据的子组件绑定要传过去的属性及属性值 在子组件中使用props配置项接收 props配置项 子组件传父组件 ---- 组件的自定义事件 子组件向父组件传递数据 通过代码来绑定自定义事件 本文将介绍在Vue中父子组件如何进行通信 这里先介

    2024年02月05日
    浏览(30)
  • 前端Vue入门-day06-路由进阶

    (创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 路由的封装抽离 声明式导航 导航链接  两个类名  自定义高亮类名  跳转传参 1. 查询参数传参 2. 动态路由传参 两种传参方式的区别  Vue路由  重定向 404 编程式导航

    2024年02月14日
    浏览(30)
  • vue3 快速入门系列 —— 组件通信

    组件通信在开发中非常重要,通信就是你给我一点东西,我给你一点东西。 本篇将分析 vue3 中组件间的通信方式。 Tip :下文提到的绝大多数通信方式在 vue2 中都有,但是在写法上有一些差异。 在 vue3 基础上进行。 新建三个组件:爷爷、父亲、孩子A、孩子B,在主页 Home.vu

    2024年04月17日
    浏览(48)
  • vue快速入门(三十六)组件通信-子传父

    注释很详细,直接上代码 上一篇 新增内容 子传父之子组件传递方法与值 子传父之父组件接收方法与值 源码 App.vue MyTest.vue 效果演示

    2024年04月25日
    浏览(29)
  • 前端Vue入门-day05-自定义指令、插槽、路由入门

    (创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 自定义指令  基本语法 (全局局部注册) 全局注册  局部注册 指令的值  v-loading 指令封装 插槽 默认插槽 后备内容(默认值)  具名插槽  作用域插槽  路由入门 单页应

    2024年02月13日
    浏览(27)
  • 探索前端跨组件通信:EventBus在Vue和React中的应用

    本文作者系360奇舞团前端开发工程师 事件总线(Event Bus) 是一种用于组件间通信的模式,通常用于解决组件之间的解耦和简化通信的问题。在前端框架中,如 Vue.js,事件总线是一个常见的概念。基本上,事件总线是一个能够触发和监听事件的机制,使得组件能够在不直接依

    2024年02月02日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包