iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >vue3provide与inject的使用小技巧分享
  • 675
分享到

vue3provide与inject的使用小技巧分享

2024-04-02 19:04:59 675人浏览 薄情痞子
摘要

目录vue3 provide与inject使用技巧进入正题父组件child组件son组件Vue3的一些实用技巧v-for 和 v-if 不要一起使用(Vue2)vue3 provid

vue3 provide与inject使用技巧

主要使用来沟通上下文,比如父——子——子1——子2,父组件和子2组件间的通信,不使用这方法也能解决的方式还有两种

  • props $emit 一层一层的传 弊端:写着太麻烦
  • vuex 用多了性能就不太行了

进入正题

官方文档上只提供了传递值的方式,没有提供子组件去跨级改父级组件的值,但是可以换一种写法就可以了,直接代码

代码结构: 父组件——child组件——son组件

父组件

<template>
  <div class="text">盒子 {{state.name}}</div>
  <div class="box">
   <Child/>
  </div>
</template>
<script lang="ts">
import { defineComponent, ref, Reactive, provide } from 'vue'
import Child from './components/child.vue'
export default defineComponent({
  components:{
    Child
  },
  setup() {
    const state: any = reactive({
      name: 'zlz',
      age: 24
    })
    const update = (key: string, val: any): void => {
      state[key] = val
    }
    provide('ref2', {
      val: state,  // val需要传递的值
      update // 更新传递的值的方法
    })
    return {
      state
    }
  }
})
</script>

ps: 当然也可以换一种写法 这一种写法要简便一点 但是语义化更弱 

const state: any = reactive({
  name: 'zlz',
  age: 24,
  update // 更新state的方法
})
provide('ref2', state)

child组件

<template>
  <div class="box">
    <div class="box">child组件</div>
    <Son/>
  </div>
</template>
<script>
import { defineComponent, reactive, toRaw } from 'vue'
import Son from './son.vue'
export default defineComponent({
  components:{
    Son
  },
  setup() {
  }
})
</script>

son组件

<template>
  <div class="box">
    son组件 {{ref2.val.age}}
  </div>
  <button @click="handleClick">
    子组件点击
  </button>
</template>
<script>
import { inject } from 'vue'
export default {
  setup() {
    const ref2 = inject('ref2')
    const handleClick = () => {
      const key = 'age'
      ref2.update(key, 111) // 调用传递下来的方法去更新父组件的值
    }
    return {
      ref2,
      handleClick
    }
  }
}
</script>

vue3的一些实用技巧

v-for 和 v-if 不要一起使用(Vue2)

优化技巧仅限于Vue2,Vue3 中对 v-for 和 v-if 的优先级做了调整,

永远不要把 v-if 和 v-for 同时用在同一个元素上

原因是 v-for 的 优先级高于 v-if,所以当它们使用再同一个标签上是,每一个渲染都会先循环再进行条件判断

注意: Vue3 中 v-if 优先级高于 v-for,所以当 v-for 和 v-if 一起使用时效果类似于 Vue2 中把 v-if 上提的效果

例如下面这段代码在 Vue2 中是不被推荐的,Vue 也会给出对应的警告

<ul>
  <li v-for="user in users" v-if="user.active">
    {{ user.name }}
  </li>
</ul>

我们应该尽量将 v-if 移动到上级 或者 使用 计算属性来处理数据

<ul v-if="active">
  <li v-for="user in users">
    {{ user.name }}
  </li>
</ul>

如果你不想让循环的内容多出一个无需有的上级容器,那么你可以选择使用 template 来作为其父元素,template 不会被浏览器渲染为 DOM 节点

如果我想要判断遍历对象里面每一项的内容来选择渲染的数据的话,可以使用 computed 来对遍历对象进行过滤

// js
let usersActive = computed(()=>users.filter(user => user.active))
// template
<ul>
    <li v-for="user in usersActive">
      {{ user.name }}
    </li>
</ul>

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: vue3provide与inject的使用小技巧分享

本文链接: https://www.lsjlt.com/news/146400.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • vue3provide与inject的使用小技巧分享
    目录vue3 provide与inject使用技巧进入正题父组件child组件son组件vue3的一些实用技巧v-for 和 v-if 不要一起使用(Vue2)vue3 provid...
    99+
    2024-04-02
  • 3.python小技巧分享-使用min和
    睡前分享一个小技巧~使用min和max函数来巧妙的查找一个字典中的最大value和最小value。比如说,现在有一个字典,字典的key是用户名,value则是这个用户的账户有多少钱。现在想要找出账户内余额最多的用户,请问如何实现?d1 = ...
    99+
    2023-01-31
    小技巧 python min
  • 分享Vue的一些小技巧
    这篇文章主要介绍“分享Vue的一些小技巧”,在日常操作中,相信很多人在分享Vue的一些小技巧问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”分享Vue的一些小技巧”的疑惑有所帮...
    99+
    2024-04-02
  • 分享Python 的十个小技巧
      一. 列表、字典、集合、元组的使用  from random import randint, sample  # 列表解析  data = [randint(-10, 10) for _ in xrange(10)]  filter(l...
    99+
    2023-01-31
    小技巧 Python
  • 分享JPA的几个小技巧
    目录1. 基本字段介绍2. 自定义ID生成器3. 自动填充字段4. End关系型数据库其实很讨人厌,尤其是在你使用数据库驱动的开发模式时。需要首先把表给创建好了,然后再使用代码生成器...
    99+
    2024-04-02
  • 常用的29个CSS小技巧分享
    本篇内容主要讲解“常用的29个CSS小技巧分享”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“常用的29个CSS小技巧分享”吧!1.清除图片下方出现几像素的空白间...
    99+
    2024-04-02
  • 分享常用的3个C++小技巧
    目录1、头文件是引用<iostream.h>还是<iostream>?2、逗号分割表达式3、在main函数之前运行代码1、头文件是引用<iostream...
    99+
    2024-04-02
  • Python小技巧练习分享
    目录1.反转数字2.类的说明文档3.设置 Python 文件的编码4.旋转字符串5.实现控制台滚动条6.print 函数直接写入文件7.合并 2 个列表1.反转数字 问题场景: 把数...
    99+
    2024-04-02
  • 分享11个常用JavaScript小技巧
    目录1.通过条件判断向对象添加属性2.检查对象中是否存在某个属性3.解构赋值4.循环遍历一个对象的key和value5.使用可选链(Optionalchaining)避免访问对象属性...
    99+
    2024-04-02
  • MyEclipse常用的使用技巧分享
    这篇文章主要介绍“MyEclipse常用的使用技巧分享”,在日常操作中,相信很多人在MyEclipse常用的使用技巧分享问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MyEclipse常用的使用技巧分享”的疑...
    99+
    2023-06-17
  • 选择域名的小技巧分享
    本篇内容主要讲解“选择域名的小技巧分享”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“选择域名的小技巧分享”吧!技巧之一:很容易的输入我们注册的域名需要便于输入,不能用特别的符号或者字母或者文字组...
    99+
    2023-06-06
  • 分享MySQL中锁的使用技巧
    MySQL 锁的使用技巧分享随着数据库应用的日益广泛,对数据库的并发控制和数据完整性要求也越来越高。在MySQL数据库中,锁是一种重要的并发控制手段,可以有效地保护数据的完整性和一致性。本文将对MySQL锁的使用技巧进行详细分享,并提供具体...
    99+
    2023-12-21
    MySQL 技巧
  • Vue中$once的两个实用小技巧分享
    目录前言清除定时器$once/$emit + async/await 实现 Dialog 同步执行总结前言 在 Vue 中有很多 API 都有很实用的地方,只是需要挖掘适用的场景,这...
    99+
    2024-04-02
  • 分享5个JavaScript的写法小技巧
    目录前言过滤空值数组对象解构分隔数字箭头函数直接返回对象await 链条总结前言 JavaScript 易上手,但是难以全面掌握;它有许多“怪癖”,只有在长时...
    99+
    2024-04-02
  • Python语言的10个小技巧分享
    这篇文章主要讲解了“Python语言的10个小技巧分享”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python语言的10个小技巧分享”吧!10个Python小技巧1. 用ZIP处理列表假设...
    99+
    2023-06-16
  • CSS常用的技巧分享
    这篇文章主要讲解了“CSS常用的技巧分享”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“CSS常用的技巧分享”吧!Box-sizing尽管box-sizing...
    99+
    2024-04-02
  • Pandas实用的技巧分享
    这篇文章主要讲解了“Pandas实用的技巧分享”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Pandas实用的技巧分享”吧!01 使用apply拆分文本Pandas 中 apply 函数,应...
    99+
    2023-06-15
  • 7个Python中的隐藏小技巧分享
    目录前言1、功能属性2、不完整代码的占位符3、 eval() 函数4、在 Python 解析器中使用以下命令启动文件托管服务器5、无限参数6、Zip() 方法7、旋转列表前言 Pyt...
    99+
    2023-03-20
    Python隐藏技巧分享 Python隐藏技巧 Python技巧
  • 分享PyCharm的字体大小调整技巧
    PyCharm是一款集成开发环境(IDE),广受Python开发者欢迎。在编写代码的过程中,适合自己的字体大小可以提高工作效率。然而,不同的屏幕分辨率和个人偏好导致了字体大小的调整问题。在本文中,我将与大家分享如何在PyChar...
    99+
    2024-02-03
    pycharm 字体 大小调整
  • 10个Python中Pip的使用技巧分享
    目录Python pip1.安装 pip2.升级 pip3.安装库4. 库的批量安装5.卸载和升级包6. 冻结 Python pip 依赖7.查看库信息8.查看需要升级的库9. 检查...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作