vue3 useAttrs的使用场景,提取共有props

这篇具有很好参考价值的文章主要介绍了vue3 useAttrs的使用场景,提取共有props。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1 场景

多个类似组件都需要传参data,用于请求接口或者处理数据,想让组件干净整洁,把参数data提出来

2 方法

选项式

可以使用mixin混入或者extends继承(略)

组合式

可以使用hook

无脑式踩坑(如下代码):

// hook

import { defineProps } from 'vue';
import service from '@/utils/index';

export default function useData() {
  const props = defineProps({
    data: {
      type: Object,
      default: () => ({
        name: '一二三',
        value: 123,
	url:''
      })
    }
  });
  console.log(props.data);
  const data = ref();

  onBeforeMount(async () => {
     data.value = await service(props.data.url);
  });
  return data;
}

// component

<template>
    <!--省略 -->
</template>
<script setup lang="ts">
import useData from '@/hook/useData';

const data = useData();

当在组件中引用hook后,控制台会警告,同时组件无法渲染

vue3 useAttrs的使用场景,提取共有props,vue,scene,javascript,前端,vue.js

解决方案:useAttrs

// hook

import service from '@/utils/index';

export default function useData() {
  const attrs = useAttrs();
  const data = ref();
  // 如需监听attrs变化,可以使用watch
  watch(()=>attrs.data,(val)=>{
     getData()     
  },{deep:true})  
  
  onBeforeMount(async () => {
     await getData() 
  });
  
  const getData = async () => {
    data.value = await service(attrs.data.url);
  }
  return data;
}

// component文章来源地址https://www.toymoban.com/news/detail-787016.html

<template>
    <!--省略 -->
</template>
<script setup lang="ts">
import useData from '@/hook/useData';

const data = useData();

到了这里,关于vue3 useAttrs的使用场景,提取共有props的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Vue指令使用场景

    2024年02月09日
    浏览(25)
  • vue2中,vue.extend使用场景

    extend是Vue.js提供的一个构造器,用于创建一个组件的子类。它接受一个组件选项对象作为参数,并返回一个新的组件构造函数。 Vue.component是一个全局方法,用于注册全局组件。它接受两个参数,第一个参数是组件名称,第二个参数是组件选项对象。 extend用于在父组件内部创

    2024年02月07日
    浏览(32)
  • vue render函数的使用场景

    render函数使用和详解_render函数如何使用-CSDN博客 上面链接写的很详细,有不懂的地方可以留言互相交流哈!~~~~~~

    2024年01月16日
    浏览(32)
  • 【vue3】使用vite构建vue3项目

    ==😉博主:初映CY的前说(前端领域) ,📒本文核心:使用vite构建vue3项目 【前言】 当我们选择了vue3作为我们项目的开发,就更加的推荐使用vite来对我们的项目进行打包。很简单——这也是开发vue的团队开发的工具,因此支持性肯定比传统的打包工具好,下面我们就来使用vi

    2024年02月06日
    浏览(44)
  • vue3 - vue3中使用ref来获取dom节点

    vue3和vue2获取元素的不同:vue2是通过 this.$refs api获取dom节点的 ; vue3是 直接使用同名的 ref 响应式数据来获取的; 1,常规使用 注意: 节点上的 ref=“input” 需要和 const input = ref(null)相对应 才能获取到此dom节点 2,v-for中的ref获取 有时我们需要 获取循环中的dom节点 并根据状态

    2024年02月16日
    浏览(38)
  • 【Vue3】vue3中的watchEffect使用及其他的API

    目录  一,watchEffect 二,生命周期 三,什么是hooks? 四,toRef  五,其他组合式API 5.1shallowReactiveshallowRef 5.2readonlyshallowReadonly 5.3.toRawmarkRaw 5.4自定义Ref-customRef ​5.5provide$inject 5.6响应式数据的判断 写在最后     1.watch: 既要指明监视的属性,也要指明监视的回调。 2.watchEffect: 不

    2024年02月01日
    浏览(48)
  • ❤ Vue3 使用

    作用 toRefs()可以将一个响应式的对象,转换成普通对象。但是转换后的普通对象的每一个属性值都是响应式的 这样我们可以使用es6的对象解构或者三点运算符等操作 代码 vue3中的RouteRecordRaw RouteRecordRaw 是 Vue Router 4.x 中新增的类型,用于定义路由配置。它是一个 TypeScript 类型

    2024年02月02日
    浏览(27)
  • Vue3使用

    vue2:上下对应,title是自己随便起的名字 1、定义一个普通的插槽,可以用div,任何标签 2、定义一个element列表里面插槽的标签 vue3:上下对应,title是自己随便起的名字 1、注意,vue3中只能用template, # 等同于 slot= 2、注意,vue3中只能用template, # 等同于 slot= :visible 指的是 属性

    2024年01月19日
    浏览(19)
  • vue3自定义拖拽,vue3-dnd 的使用

    资料地址: 入门文档:https://hcg1023.github.io/vue3-dnd/guide/ 案例文档:https://hcg1023.github.io/vue3-dnd/example/ react-dnd:https://react-dnd.github.io/react-dnd/docs/overview 踩坑记录: 1、安装时需要安装react-dnd-html5-backend npm install vue3-dnd react-dnd-html5-backend 2、标签要包裹在app外层,而不是放在你想要

    2024年02月09日
    浏览(28)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包