14
14
npm install @vue/babel-plugin-jsx -D
15
15
```
16
16
17
- 配置 Babel
17
+ 配置 Babel
18
18
19
19
``` js
20
20
{
@@ -58,9 +58,14 @@ Default: `true`
58
58
59
59
合并 class / style / onXXX handlers
60
60
61
+ #### enableObjectSlots
62
+
63
+ 使用 ` enableObjectSlots ` (文档下面会提到)。虽然在 JSX 中比较好使,但是会增加一些 ` _isSlot ` 的运行时条件判断,这会增加你的项目体积。即使你关闭了 ` enableObjectSlots ` ,` v-slots ` 还是可以使用
64
+
61
65
## 表达式
62
66
63
67
### 内容
68
+
64
69
函数式组件
65
70
66
71
``` jsx
@@ -73,12 +78,12 @@ const App = () => <div></div>;
73
78
const App = {
74
79
render () {
75
80
return < div> Vue 3.0 < / div> ;
76
- }
81
+ },
77
82
};
78
83
```
79
84
80
85
``` jsx
81
- import { withModifiers , defineComponent } from ' vue' ;
86
+ import { withModifiers , defineComponent } from " vue" ;
82
87
83
88
const App = defineComponent ({
84
89
setup () {
@@ -89,11 +94,9 @@ const App = defineComponent({
89
94
};
90
95
91
96
return () => (
92
- < div onClick= {withModifiers (inc, [' self' ])}>
93
- {count .value }
94
- < / div>
97
+ < div onClick= {withModifiers (inc, [" self" ])}> {count .value }< / div>
95
98
);
96
- }
99
+ },
97
100
});
98
101
```
99
102
@@ -117,13 +120,8 @@ const App = () => <input type="email" />;
117
120
动态绑定:
118
121
119
122
```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} />;
127
125
```
128
126
129
127
### 指令
@@ -150,11 +148,11 @@ v-model
150
148
```
151
149
152
150
```jsx
153
- <input v-model={[val, [' modifier' ]]} />
151
+ <input v-model={[val, [" modifier" ]]} />
154
152
```
155
153
156
154
```jsx
157
- <A v-model={[val, ' argument' , [' modifier' ]]} />
155
+ <A v-model={[val, " argument" , [" modifier" ]]} />
158
156
```
159
157
160
158
会变编译成:
@@ -163,29 +161,34 @@ v-model
163
161
h(A, {
164
162
argument: val,
165
163
argumentModifiers: {
166
- modifier: true
164
+ modifier: true,
167
165
},
168
- ' onUpdate: argument' : $event => val = $event
169
- })
166
+ " onUpdate:argument": ( $event) => ( val = $event),
167
+ });
170
168
```
171
169
172
170
v-models
173
171
174
172
> 注意: 你应该传递一个二维数组给 v-models。
175
173
176
174
```jsx
177
- <A v-models={[[foo], [bar, ' bar' ]]} />
175
+ <A v-models={[[foo], [bar, " bar" ]]} />
178
176
```
179
177
180
178
```jsx
181
- <A v-models={[[foo, ' foo' ], [bar, ' bar' ]]} />
179
+ <A
180
+ v-models={[
181
+ [foo, "foo"],
182
+ [bar, "bar"],
183
+ ]}
184
+ />
182
185
```
183
186
184
187
```jsx
185
188
<A
186
189
v-models={[
187
- [foo, [' modifier' ]],
188
- [bar, ' bar' , [' modifier' ]],
190
+ [foo, [" modifier" ]],
191
+ [bar, " bar" , [" modifier" ]],
189
192
]}
190
193
/>
191
194
```
@@ -198,13 +201,13 @@ h(A, {
198
201
modelModifiers: {
199
202
modifier: true,
200
203
},
201
- ' onUpdate: modelValue' : $event => foo = $event,
204
+ " onUpdate:modelValue": ( $event) => ( foo = $event) ,
202
205
bar: bar,
203
206
barModifiers: {
204
207
modifier: true,
205
208
},
206
- ' onUpdate: bar' : $event => bar = $event,
207
- })
209
+ " onUpdate:bar": ( $event) => ( bar = $event) ,
210
+ });
208
211
```
209
212
210
213
自定义指令
@@ -213,31 +216,27 @@ h(A, {
213
216
const App = {
214
217
directives: { custom: customDirective },
215
218
setup() {
216
- return () => (
217
- <a
218
- v-custom={[val, ' arg' , [' a' , ' b' ]]}
219
- />
220
- );
219
+ return () => <a v-custom={[val, "arg", ["a", "b"]]} />;
221
220
},
222
221
};
223
222
```
224
223
225
- ### 插槽
224
+ ### 插槽
226
225
227
- > 注意: 在 `jsx` 中,应该使用 **`v-slots`** 代替 * `v-slot`*
226
+ > 注意: 在 `jsx` 中,应该使用 **`v-slots`** 代替 _ `v-slot`_
228
227
229
228
```jsx
230
229
const App = {
231
230
setup() {
232
231
const slots = {
233
- foo: () => <span>B</span>
232
+ foo: () => <span>B</span>,
234
233
};
235
234
return () => (
236
235
<A v-slots={slots}>
237
236
<div>A</div>
238
237
</A>
239
238
);
240
- }
239
+ },
241
240
};
242
241
243
242
// or
@@ -246,10 +245,10 @@ const App = {
246
245
setup() {
247
246
const slots = {
248
247
default: () => <div>A</div>,
249
- foo: () => <span>B</span>
248
+ foo: () => <span>B</span>,
250
249
};
251
250
return () => <A v-slots={slots} />;
252
- }
251
+ },
253
252
};
254
253
255
254
// or
@@ -260,14 +259,14 @@ const App = {
260
259
<A>
261
260
{{
262
261
default: () => <div>A</div>,
263
- foo: () => <span>B</span>
262
+ foo: () => <span>B</span>,
264
263
}}
265
264
</A>
266
- <B>{() => ' foo' }</B>
265
+ <B>{() => " foo" }</B>
267
266
</>
268
267
);
269
- }
270
- }
268
+ },
269
+ };
271
270
```
272
271
273
272
### 在 TypeSript 中使用
0 commit comments