You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							57 lines
						
					
					
						
							1.4 KiB
						
					
					
				
			
		
		
	
	
							57 lines
						
					
					
						
							1.4 KiB
						
					
					
				| ## @vue/babel-sugar-functional-vue
 | |
| 
 | |
| Syntactic sugar for functional components.
 | |
| 
 | |
| ### Babel Compatibility Notes
 | |
| 
 | |
| - This repo is only compatible with Babel 7.x, for 6.x please use [vuejs/babel-plugin-transform-vue-jsx](https://github.com/vuejs/babel-plugin-transform-vue-jsx)
 | |
| 
 | |
| ### Usage
 | |
| 
 | |
| Install the dependencies:
 | |
| 
 | |
| ```sh
 | |
| # for yarn:
 | |
| yarn add @vue/babel-sugar-functional-vue
 | |
| # for npm:
 | |
| npm install @vue/babel-sugar-functional-vue --save
 | |
| ```
 | |
| 
 | |
| In your `.babelrc`:
 | |
| 
 | |
| ```json
 | |
| {
 | |
|   "plugins": ["@vue/babel-sugar-functional-vue"]
 | |
| }
 | |
| ```
 | |
| 
 | |
| However it is recommended to use the [configurable preset](../babel-preset-jsx/README.md) instead.
 | |
| 
 | |
| ### Details
 | |
| 
 | |
| This plugin transpiles arrow functions that return JSX into functional components but only if it's an uppercase variable declaration or default export:
 | |
| 
 | |
| ```js
 | |
| // Original:
 | |
| export const A = ({ props, listeners }) => <div onClick={listeners.click}>{props.msg}</div>
 | |
| export const b = ({ props, listeners }) => <div onClick={listeners.click}>{props.msg}</div>
 | |
| export default ({ props, listeners }) => <div onClick={listeners.click}>{props.msg}</div>
 | |
| 
 | |
| // Result:
 | |
| export const A = {
 | |
|   functional: true,
 | |
|   render: (h, {
 | |
|     props,
 | |
|     listeners
 | |
|   }) => <div onClick={listeners.click}>{props.msg}</div>
 | |
| }
 | |
| export const b = ({ props, listeners }) => <div onClick={listeners.click}>{props.msg}</div>
 | |
| export default {
 | |
|   functional: true,
 | |
|   render: (h, {
 | |
|     props,
 | |
|     listeners
 | |
|   }) => <div onClick={listeners.click}>{props.msg}</div>
 | |
| }
 | |
| ```
 |