5

我可以dayjs通过将 vue3 组件添加到内部来使用它data()


    import dayjs from 'dayjs'
    
    export default {
      data() {
        return {
          dayjs
        }
      }
    }

然后我将能够在模板中使用它,但这是正确的方法吗?

如果我想配置 dayjs 并在全局范围内使用它怎么办?我试过了

    import dayjs from 'dayjs'
    import { createApp } from 'vue'
    const app  = createApp(App)
    
    app.use(dayjs) // doesn't work
    app.dayjs = dayjs // doesn't work
    
    app.mount("#app')

但到目前为止无法让它工作。
正确的方法是什么?

4

4 回答 4

10

你可以用

import dayjs from 'dayjs'
import { createApp } from 'vue'
const app  = createApp(App)
    
app.config.globalProperties.$dayjs = dayjs
    
app.mount("#app')
于 2021-03-15T18:54:03.653 回答
3

接受的方法似乎没有考虑组合 API。我的理解是,将其与 Composition API 一起使用的唯一方法是提供/注入。下面的示例使用组合 API、脚本和模板中的选项 API。

//[main.js]

import dayjs from 'dayjs' //import dayjs in your main.js
 
app.provide('dayJS', dayjs) // provide dayJS

app.use(router).mount("#app") // mount app

// [component.js]

// Composition API setup ------------------
import { inject } from 'vue' // import inject from vue
const dayJS = inject("dayJS") // inject dayJS

//make sure that you return dayJS in setup along with any functions/variables
return { dayJS }

// Options API setup ------------------
app.component('mycomponent', {
  inject: ['dayJS'],
  created() {
    console.log(dayJS())  
  }
})

//You can now use dayJS directly within setup ex: dayJS() or template ex: {{dayJS()}}.

于 2021-10-27T11:57:48.950 回答
1

您可以在组件内部provide/inject使用dayjs

//main.js
import dayjs from 'dayjs'
import { createApp } from 'vue'

const app = createApp({
  provide() {
    return {
      $dayjs: dayjs // <-- provide 
    }
  },    
    
app.mount("#app')


//myComponent.vue
<template>
    DajsJS: {{ myDays }}
</template>

<script>
export default {
  name: 'myComponent',
  inject: ['$dayjs'], // <-- inject
  computed: {
    myDays() {
      return this.$dayjs('1990-01-01')
    }
  }
}
</script>
于 2021-09-03T14:23:22.283 回答
0

如果您使用的是组合 API,则可以直接使用 dayjs,而无需通过提供者传递它。看下面的例子。

<template>
  <section>
    <h1>Título de ejemplo</h1>
    <h2>
      Fecha de creación 
      {{ dayjs('Fri Dec 17 2021 00:55:42 GMT-0500 (hora estándar de Colombia)').format('DD/MM/YYYY HH:mm') }}
    </h2>
    <h3>
      Otra prueba {{ date }}
    </h3>
  </section>
</template>

<script lang="ts">
import { defineComponent, computed, ref } from "vue";

import dayjs from "dayjs";

export default defineComponent({
  name: 'Ejemplo',
  setup() {

    const date_example = ref<string>('Fri Dec 17 2021 00:55:42 GMT-0500 (hora estándar de Colombia)');

    const date = computed<string>((): string => {
      return dayjs(date_example.value).format('DD/MM/YYYY HH:mm');
    });

    return {
      dayjs,
      date,
    }
  }
});
</script>
于 2021-12-17T06:08:19.970 回答