babel-preset-vca-jsx v0.3.6
babel-preset-vca-jsx
Support for automatic import of
createElement as handsetupfunctional component syntax andsetuptemplate refs
Feature
- Automatically import
createElement as hwhen writingJSX - The functional component syntax of the
setup()by defaultconst Hello = (prop, ctx) => { const state = ref('hello world'); return () => <h1>{state.value}</h1>; }; - Allocating template refs with
JSXon the render function returned bysetup()const Hello = createComponent({ setup() { const root = ref(null); watch(() => console.log(root.value)); // <h1>...</h1> /* return () => h('h1', { ref: root }, 'hello world!'); */ return () => <h1 ref={root}>hello world!</h1> } }); - Fixed @vue/babel-sugar-v-model@1.1.2 calling
thisinsetup()
Example
Before compiling
import { ref } from '@vue/composition-api';
const Hello = (prop, ctx) => {
const state = ref('Hello World!');
return () => (
<h1>{state.value}</h1>
);
};After compilation
import { ref, createElement as h } from '@vue/composition-api';
const Hello = {
setup: (prop, ctx) => {
const state = ref('Hello World!');
return () => {
return h('h1', state.value);
};
}
};Prerequisite
Project with @vue/composition-api and @vue/cli-plugin-babel installed
How to use?
Install
npm install babel-preset-vca-jsx --save-devConfig
babel.config.jsmodule.exports = { presets: [ "vca-jsx", "@vue/cli-plugin-babel/preset" ] };
Note
Here we need to distinguish between the default
functionalcomponent and thecomposition-api-basedfunctionalcomponent.The default
functionalcomponent is essentially therenderfunction. The shorthand injsxis as followsconst Test = ({ props, children, data, ... }) => { return <h1>Hello World!</h1>; };Tips:The first letter of the variable name must be capitalized. For details of the callback parameters, see Detail
The
composition-api functionalcomponent based on this plugin is essentially asetupfunction, and the shorthand injsxis as followsconst Test = (props, { refs, emit, ... }) => { return () => <h1>Hello World!</h1>; };Tips:The difference from the default
functionalis that arenderfunction is returned