1414npm install @vue/babel-plugin-jsx -D
1515```
1616
17- 配置 Babel
17+ 配置 Babel
1818
1919``` js
2020{
@@ -58,9 +58,14 @@ Default: `true`
5858
5959合并 class / style / onXXX handlers
6060
61+ #### enableObjectSlots
62+
63+ 使用 ` enableObjectSlots ` (文档下面会提到)。虽然在 JSX 中比较好使,但是会增加一些 ` _isSlot ` 的运行时条件判断,这会增加你的项目体积。即使你关闭了 ` enableObjectSlots ` ,` v-slots ` 还是可以使用
64+
6165## 表达式
6266
6367### 内容
68+
6469函数式组件
6570
6671``` jsx
@@ -73,12 +78,12 @@ const App = () => <div></div>;
7378const App = {
7479 render () {
7580 return < div> Vue 3.0 < / div> ;
76- }
81+ },
7782};
7883```
7984
8085``` jsx
81- import { withModifiers , defineComponent } from ' vue' ;
86+ import { withModifiers , defineComponent } from " vue" ;
8287
8388const App = defineComponent ({
8489 setup () {
@@ -89,11 +94,9 @@ const App = defineComponent({
8994 };
9095
9196 return () => (
92- < div onClick= {withModifiers (inc, [' self' ])}>
93- {count .value }
94- < / div>
97+ < div onClick= {withModifiers (inc, [" self" ])}> {count .value }< / div>
9598 );
96- }
99+ },
97100});
98101```
99102
@@ -117,13 +120,8 @@ const App = () => <input type="email" />;
117120动态绑定:
118121
119122```jsx
120- const placeholderText = ' email' ;
121- const App = () => (
122- <input
123- type="email"
124- placeholder={placeholderText}
125- />
126- );
123+ const placeholderText = "email";
124+ const App = () => <input type="email" placeholder={placeholderText} />;
127125```
128126
129127### 指令
@@ -150,11 +148,11 @@ v-model
150148```
151149
152150```jsx
153- <input v-model={[val, [' modifier' ]]} />
151+ <input v-model={[val, [" modifier" ]]} />
154152```
155153
156154```jsx
157- <A v-model={[val, ' argument' , [' modifier' ]]} />
155+ <A v-model={[val, " argument" , [" modifier" ]]} />
158156```
159157
160158会变编译成:
@@ -163,29 +161,34 @@ v-model
163161h(A, {
164162 argument: val,
165163 argumentModifiers: {
166- modifier: true
164+ modifier: true,
167165 },
168- ' onUpdate: argument' : $event => val = $event
169- })
166+ " onUpdate:argument": ( $event) => ( val = $event),
167+ });
170168```
171169
172170v-models
173171
174172> 注意: 你应该传递一个二维数组给 v-models。
175173
176174```jsx
177- <A v-models={[[foo], [bar, ' bar' ]]} />
175+ <A v-models={[[foo], [bar, " bar" ]]} />
178176```
179177
180178```jsx
181- <A v-models={[[foo, ' foo' ], [bar, ' bar' ]]} />
179+ <A
180+ v-models={[
181+ [foo, "foo"],
182+ [bar, "bar"],
183+ ]}
184+ />
182185```
183186
184187```jsx
185188<A
186189 v-models={[
187- [foo, [' modifier' ]],
188- [bar, ' bar' , [' modifier' ]],
190+ [foo, [" modifier" ]],
191+ [bar, " bar" , [" modifier" ]],
189192 ]}
190193/>
191194```
@@ -198,13 +201,13 @@ h(A, {
198201 modelModifiers: {
199202 modifier: true,
200203 },
201- ' onUpdate: modelValue' : $event => foo = $event,
204+ " onUpdate:modelValue": ( $event) => ( foo = $event) ,
202205 bar: bar,
203206 barModifiers: {
204207 modifier: true,
205208 },
206- ' onUpdate: bar' : $event => bar = $event,
207- })
209+ " onUpdate:bar": ( $event) => ( bar = $event) ,
210+ });
208211```
209212
210213自定义指令
@@ -213,31 +216,27 @@ h(A, {
213216const App = {
214217 directives: { custom: customDirective },
215218 setup() {
216- return () => (
217- <a
218- v-custom={[val, ' arg' , [' a' , ' b' ]]}
219- />
220- );
219+ return () => <a v-custom={[val, "arg", ["a", "b"]]} />;
221220 },
222221};
223222```
224223
225- ### 插槽
224+ ### 插槽
226225
227- > 注意: 在 `jsx` 中,应该使用 **`v-slots`** 代替 * `v-slot`*
226+ > 注意: 在 `jsx` 中,应该使用 **`v-slots`** 代替 _ `v-slot`_
228227
229228```jsx
230229const App = {
231230 setup() {
232231 const slots = {
233- foo: () => <span>B</span>
232+ foo: () => <span>B</span>,
234233 };
235234 return () => (
236235 <A v-slots={slots}>
237236 <div>A</div>
238237 </A>
239238 );
240- }
239+ },
241240};
242241
243242// or
@@ -246,10 +245,10 @@ const App = {
246245 setup() {
247246 const slots = {
248247 default: () => <div>A</div>,
249- foo: () => <span>B</span>
248+ foo: () => <span>B</span>,
250249 };
251250 return () => <A v-slots={slots} />;
252- }
251+ },
253252};
254253
255254// or
@@ -260,14 +259,14 @@ const App = {
260259 <A>
261260 {{
262261 default: () => <div>A</div>,
263- foo: () => <span>B</span>
262+ foo: () => <span>B</span>,
264263 }}
265264 </A>
266- <B>{() => ' foo' }</B>
265+ <B>{() => " foo" }</B>
267266 </>
268267 );
269- }
270- }
268+ },
269+ };
271270```
272271
273272### 在 TypeSript 中使用
0 commit comments