Vue3+CompositionAPIを使っていますが、MixinやFilterが無くなったのでその代替をどうするか。
Filterの代わり
globalProperties
を使います。
globalPropertiesに登録したものは、Templateからそのまま参照できます。
const app = createApp(App) |
{{ $filters.formatNumber(num) }} |
setup()からの参照
setup()
内では$filters
では参照できません。参照したい場合は、次のようにgetCurrentInstance()
を利用します。
import { defineComponent, getCurrentInstance } from "vue" |
sample-code: https://codesandbox.io/s/upbeat-mcnulty-mxi7i?file=/src/App.vue
provide/ inject
もしくは、設計思想的にはprovide, injectを利用するのがよさそうです。
app.provide("$filters", app.config.globalProperties.$filters) |
setup() { |
キーは文字列じゃなくて、exportしたSymbolにするのが良さそう。