@vue/babel-sugar-composition-api-render-instance

Babel syntactic sugar for replaceing `this` with `getCurrentInstance()` in Vue JSX with @vue/composition-api
34,222,398 1,474
Install
npm install @vue/babel-sugar-composition-api-render-instance
Latest Version:1.4.0
Vue:2
License:MIT
Last Updated:May 31, 2024
Links: GitHub  ·  npm
Maintainer: akryum

@vue/babel-sugar-composition-api-render-instance

Ported from luwanquan/babel-preset-vca-jsx by @luwanquan

Babel syntactic sugar for replacing this with getCurrentInstance() in Vue JSX with @vue/composition-api

Babel Compatibility Notes

  • This repo is only compatible with Babel 7.x

Usage

Install the dependencies:

# for yarn:
yarn add @vue/babel-sugar-composition-api-render-instance
# for npm:
npm install @vue/babel-sugar-composition-api-render-instance --save

In your .babelrc:

{
  "plugins": ["@vue/babel-sugar-composition-api-render-instance"]
}

However it is recommended to use the configurable preset instead.

Details

This plugin automatically replaces this in setup() with getCurrentInstance(). This is required for JSX to work in @vue/composition-api as this is not available in setup()

Input:

defineComponent({ 
  setup() {
    return () => <MyComponent vModel={a.b} />
  }
})

Output (without @vue/babel-sugar-composition-api-render-instance):

defineComponent({
  setup() {
    return () => <MyComponent model={{
      value: a.b,
      callback: $$v => {
        this.$set(a, "b", $$v);
      }
    }} />
  }
})

Output (with @vue/babel-sugar-composition-api-render-instance):

import { getCurrentInstance } from "@vue/composition-api";

defineComponent({
  setup() {
    const __currentInstance = getCurrentInstance();

    return () => <MyComponent model={{
      value: a.b,
      callback: $$v => {
        __currentInstance.$set(a, "b", $$v);
      }
    }} />
  }
})

Related Packages

@vue/devtools-api

Plugins API for easier DevTools integrations.

471,046,026 2,932
@vue/compiler-vue2

template compiler for Vue 2.x

184,385,144 212,629
@vue/test-utils

Component testing utils for Vue 3.

171,749,877 1,161
@vue/babel-plugin-jsx

Babel plugin for Vue 3 JSX

153,148,630 1,781
@vue/eslint-config-typescript

ESLint config for TypeScript + Vue.js projects

76,955,056 192

Version History

Version Released Vue License
1.4.0 ^2.5.17 MIT
1.3.0 ^2.5.17 MIT
1.2.4 ^2.5.17 MIT
1.2.1 ^2.5.17 MIT
1.2.0 ^2.5.17 MIT