vue3 通过计算属性和methods代替 filter 过滤器实现组件中作用域插槽时间格式化

在vue3中没有了 filter 过滤器,想要实现时间格式化,就需要我们另辟蹊径,所以我尝试了用

计算属性代替它去格式化时间。

第一部分:给封装的函数设置单独的js文件,导入组件格式化时间(computed)

第一步:网上查找能格式化时间的代码

// 用于格式化时间
// 设置按需导出
export function formatDate(value, format) {
  //value: 需要格式化的数据
  //format: 指定格式 yyyy-MM-dd hh:mm:ss

  let date = new Date(value);
  // 获取年份
  let year = date.getFullYear();

  if (/(y+)/.test(format)) {
    // 获取匹配组的内容
    let content = RegExp.$1;
    format = format.replace(content, year.toString().slice(4 - content.length));
  }

 let o = {
   // y: date.getFullYear(),  // 用这一句也行,但只适用于四位数显示时候用
   M: date.getMonth() + 1,
   d: date.getDate(),
   h: date.getHours(),
   m: date.getMinutes(),
   s: date.getSeconds()
 };

 for (let key in o) {
   // 构造动态正则
   let reg = new RegExp(`(${key}+)`);

   if (reg.test(format)) {
     // 获取匹配组的内容
     let content = RegExp.$1;
     let k = o[key] >= 10 ? o[key] : content.length == 2 ? '0' + o[key] : o[key];
     format = format.replace(content, k);
   }
 }
 return format;
}

第二步:在页面按需导入

import { formatDate } from '@/utils/index'

computed: {
 formatDate() {
   return formatDate
  }
 },

第三步:在作用域插槽中的使用

//在插槽中格式化时间
// row.timeOfEntry是我想要格式化的时间
<template v-slot="{row}"><span>{{ formatDate(row.timeOfEntry, "yyyy-MM-dd") }}</span></template>
//在页面上使用
formatDate('2021.3.6', "hh:mm dd/MM/yyyy")

提示
formatDate(value, format)
  //value: 需要格式化的数据
  //format: 指定格式 yyyy-MM-dd hh:mm:ss

 第二部分:直接在组件中格式化作用域插槽的时间(methods)

//methods中写入
methods: {
  dateFormat: function(time) {
    const data = new Date(time)
    //data.getDate()获取日
    return data.getDate()
  }
}

//结构作用域插槽中使用 
//data.day为想要格式化的时间
{{ dateFormat(data.day) }}
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Vue 3作用域插槽(scoped slots)是一种用于将父组件的数据传递给子组件的技术。作用域插槽允许你在子组件使用父组件的数据,并将其渲染到子组件模板。 使用作用域插槽,你可以将父组件的数据传递给子组件,并在子组件的模板使用该数据。这样就可以在父组件定义一个插槽,然后在子组件使用该插槽来访问父组件的数据。 要在Vue 3使用作用域插槽,首先在父组件定义一个插槽,并使用`v-slot`指令给它一个名称。然后,在子组件使用`<template v-slot:插槽名称>`来引用该插槽,并在该插槽可以访问到父组件传递的数据。 以下是一个示例,展示了如何在Vue 3使用作用域插槽: 父组件模板: ```html <template> <div> <child-component> <template v-slot:default="slotProps"> {{ slotProps.data }} </template> </child-component> </div> </template> ``` 子组件模板: ```html <template> <div> <slot :data="someData"></slot> </div> </template> ``` 在这个示例,父组件通过`v-slot:default`定义了一个名为"default"的插槽,并在插槽使用了`slotProps`作为插槽的参数。子组件使用`<slot>`来声明插槽,并通过`:data`属性将数据传递给插槽。 当父组件渲染时,子组件插槽将被替换为父组件传递的数据,并在子组件的模板显示出来。 希望这个示例能帮助你理解Vue 3作用域插槽的用法。如果有任何问题,请随时提问!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一个好好的程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值