Vue3.0封装日期格式化管道(过滤器)函数

3 篇文章 0 订阅
2 篇文章 0 订阅

前言:

最近这段时间,公司更新技术栈,逐步从原来的angular转移到了当前比较火的vue3.0上来,以下代码均是基于Vue3.0+ant+TypeScript+Vite+less环境进行开发的

vue3.0简介

这里就不做过多叙述了,有需要的可以去官网vue3.0看这里

vue3.0过滤器(filter)

有关叙述和部分案例可以看这里vue3.0关于filter的描述
从官网上的描述,我们可以看出,我们如果使用全局的filter来添加过滤器其实已经没有太多必要,它已经不再像2.0时期可以使用管道符(|)来对数据进行格式化,反而使用变成了一个方法的调用,因此我们完全可以用一个公共方法来代替上面的写法,下面看下我的代码吧

const DateFormatPipe = (date: Date, type: String) => {
    if (date) {
      let year, month, day, HH, mm, ss;
      let time = new Date(date);
      let timeDate;
      year = time.getFullYear(); // 年
      month = time.getMonth() + 1; // 月
      day = time.getDate(); // 日
      HH = time.getHours(); // 时
      mm = time.getMinutes(); // 分
      ss = time.getSeconds(); // 秒
  
      month = month < 10 ? '0' + month : month;
      day = day < 10 ? '0' + day : day;
      HH = HH < 10 ? '0' + HH : HH; // 时
      mm = mm < 10 ? '0' + mm : mm; // 分
      ss = ss < 10 ? '0' + ss : ss; // 秒
  
      switch (type) {
        case 'yyyy':
          timeDate = String(year);
          break;
        case 'yyyy-MM':
          timeDate = year + '-' + month;
          break;
        case 'yyyy-MM-dd':
          timeDate = year + '-' + month + '-' + day;
          break;
        case 'yyyy/MM/dd':
          timeDate = year + '/' + month + '/' + day;
          break;
        case 'yyyy-MM-dd HH:mm:ss':
          timeDate = year + '-' + month + '-' + day + '' + HH + ':' + mm + ':' + ss;
          break;
        case 'HH:mm:ss':
          timeDate = HH + ':' + mm + ':' + ss;
          break;
        case 'MM':
          timeDate = String(month);
          break;
        default:
          timeDate = year + '-' + month + '-' + day;
          break;
      }
      return timeDate;
    } else {
      return '';
    }
  };
  export default DateFormatPipe;
  

使用时我们就直接在组件(.vue文件中引用),然后在template里使用就好了

// 这里要写你自己的文件路径
// 注意我这里这样导入是因为我在文件导出时写了default,否则应该是import {} from ''
import DateFormatPipe from "../../utils/dateFormat.pipe";

template中使用

<a-table :loading="loading" rowKey="bizId" :data-source="loanCvmInfoList" :columns="columns" :pagination="false"
                :scroll="{ y: 240 }" :rowClassName="setRowClassName" :customRow="rowClick">
   <template #bodyCell="{ column, record, index }">
      <template v-if="column.key === 'amount'">
          <span>{{ NumberFormatPipe(record.amount, 2) }}</span>
      </template>
      <template v-if="column.key === 'beginDate'">
          <span>{{ DateFormatPipe(record.beginDate, 'yyyy-MM-dd') }}</span>
      </template>
      <template v-if="column.key === 'dueDate'">
           <span>{{ DateFormatPipe(record.dueDate, 'yyyy-MM-dd') }}</span>
       </template>
   </template>
</a-table>
  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
Vue 3.0 中可以使用 Composition API 来封装一个 Select 组件。下面是一个简单的 Select 组件的示例代码: ```vue <template> <div class="select"> <label>{{ label }}</label> <select v-model="selectedValue" @change="handleChange"> <option v-for="(option, index) in options" :key="index" :value="option.value">{{ option.label }}</option> </select> </div> </template> <script> import { ref } from 'vue' export default { props: { label: String, options: { type: Array, required: true }, value: { type: String, required: true } }, setup(props, { emit }) { const selectedValue = ref(props.value) function handleChange(event) { selectedValue.value = event.target.value emit('update:value', selectedValue.value) } return { selectedValue, handleChange } } } </script> ``` 在这个示例中,我们使用了 `ref` 创建了一个响应式的 `selectedValue` 变量,并在 `handleChange` 方法中更新了它的值。同时,我们也使用了 `emit` 方法来触发一个名为 `update:value` 的事件,以便父组件可以监听到 `selectedValue` 变量的变化。 在父组件中使用这个 Select 组件时,可以像这样: ```vue <template> <div> <Select label="选择" :options="options" v-model="selectedOption" /> </div> </template> <script> import Select from './Select.vue' export default { components: { Select }, data() { return { options: [ { value: '1', label: '选项1' }, { value: '2', label: '选项2' }, { value: '3', label: '选项3' } ], selectedOption: '1' } } } </script> ``` 在这个示例中,我们将 `options` 数组作为属性传递给了 Select 组件,同时使用 `v-model` 指令将 `selectedOption` 变量绑定到了 Select 组件的 `value` 属性上。这样,当用户选择不同的选项时,`selectedOption` 变量的值也会随之变化。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值