mirror of
				https://github.com/vuejs/babel-plugin-jsx.git
				synced 2025-10-31 09:22:19 +08:00 
			
		
		
		
	
			
				
					
						
					
					9a2a5277b4004fc4a75c1873a3fb8ae8b6f1318d
				
			
			
		
	Babel Plugin JSX for Vue 3.0
To add Vue JSX support.
Installation
Install the plugin with:
npm install @ant-design-vue/babel-plugin-jsx
Then add the plugin to .babelrc:
{
  "plugins": ["@ant-design-vue/babel-plugin-jsx"]
}
Syntax
Content
functional component
const App = () => <div></div>
with render
const App = {
  render() {
    return <div>Vue 3.0</div>
  }
}
const App = defineComponent(() => {
  const count = ref(0);
  const inc = () => {
    count.value++;
  };
  return () => (
    <div onClick={inc}>
      {count.value}
    </div>
  )
})
fragment
const App = () => (
  <>
    <span>I'm</span>
    <span>Fragment</span>
  </>
)
Attributes/Props
const App = () => <input type="email" />
with a dynamic binding:
const placeholderText = 'email'
const App = () => (
  <input
    type="email"
    placeholder={placeholderText}
  />
)
Directives
It is recommended to use camelCase version of it (
vModel) in JSX, but you can use kebab-case too (v-model).
v-show
const App = {
  data() {
    return { visible: true };
  },
  render() {
    return <input vShow={this.visible} />;
  },
};
v-model
- You should use underscore (_) instead of dot (.) for modifiers (vModel_trim={this.test})
export default {
  data: () => ({
    test: 'Hello World',
  }),
  render() {
    return (
      <>
        <input type="text" vModel_trim={this.test} />
        {this.test}
      </>
    )
  },
}
Compatibility
This repo is only compatible with:
- Babel 7+
- Vue 3+
					Languages
				
				
								
								
									TypeScript
								
								97.6%
							
						
							
								
								
									CSS
								
								1.6%
							
						
							
								
								
									HTML
								
								0.5%
							
						
							
								
								
									JavaScript
								
								0.3%