如何在 vue 3 应用程序和组件中正确使用 dayjs

Anu*_*ond 3 vue.js vuejs3 dayjs

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


    import dayjs from 'dayjs'
    
    export default {
      data() {
        return {
          dayjs
        }
      }
    }
Run Code Online (Sandbox Code Playgroud)

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

如果我想配置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')
Run Code Online (Sandbox Code Playgroud)

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

Nei*_*itt 12

接受的方法似乎没有考虑组合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()}}.
Run Code Online (Sandbox Code Playgroud)


Три*_*офф 5

你可以使用

import dayjs from 'dayjs'
import { createApp } from 'vue'
const app  = createApp(App)
    
app.config.globalProperties.$dayjs = dayjs
    
app.mount("#app')
Run Code Online (Sandbox Code Playgroud)

  • 嗯,最佳实践使用`app.use()`,但它需要适应dayjs lib。`app.config.globalProperties` 正常做法。在组件 js 中你可以使用 `this.$dayjs`,在模板 `$dayjs` 中 (2认同)
  • 这只是给了我错误``无法读取未定义的属性'globalProperties'``有什么想法吗? (2认同)