Skip to content

Commit 5452404

Browse files
authored
feat(compiler-vapor): add jsx support for setText and createTextNode (#12893)
1 parent a95b5e7 commit 5452404

File tree

2 files changed

+9
-6
lines changed

2 files changed

+9
-6
lines changed

packages/compiler-vapor/src/generators/text.ts

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ export function genSetText(
1414
context: CodegenContext,
1515
): CodeFragment[] {
1616
const { helper } = context
17-
const { element, values, generated } = oper
18-
const texts = combineValues(values, context)
17+
const { element, values, generated, jsx } = oper
18+
const texts = combineValues(values, context, jsx)
1919
return [
2020
NEWLINE,
2121
...genCall(helper('setText'), `${generated ? 'x' : 'n'}${element}`, texts),
@@ -27,29 +27,30 @@ export function genCreateTextNode(
2727
context: CodegenContext,
2828
): CodeFragment[] {
2929
const { helper } = context
30-
const { id, values } = oper
30+
const { id, values, jsx } = oper
3131
return [
3232
NEWLINE,
3333
`const n${id} = `,
3434
...genCall(
3535
helper('createTextNode'),
36-
values && combineValues(values, context),
36+
values && combineValues(values, context, jsx),
3737
),
3838
]
3939
}
4040

4141
function combineValues(
4242
values: SimpleExpressionNode[],
4343
context: CodegenContext,
44+
jsx?: boolean,
4445
): CodeFragment[] {
4546
return values.flatMap((value, i) => {
4647
let exp = genExpression(value, context)
47-
if (getLiteralExpressionValue(value) == null) {
48+
if (!jsx && getLiteralExpressionValue(value) == null) {
4849
// dynamic, wrap with toDisplayString
4950
exp = genCall(context.helper('toDisplayString'), exp)
5051
}
5152
if (i > 0) {
52-
exp.unshift(' + ')
53+
exp.unshift(jsx ? ', ' : ' + ')
5354
}
5455
return exp
5556
})

packages/compiler-vapor/src/ir/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,7 @@ export interface SetTextIRNode extends BaseIRNode {
121121
element: number
122122
values: SimpleExpressionNode[]
123123
generated?: boolean // whether this is a generated empty text node by `processTextLikeContainer`
124+
jsx?: boolean
124125
}
125126

126127
export type KeyOverride = [find: string, replacement: string]
@@ -161,6 +162,7 @@ export interface CreateTextNodeIRNode extends BaseIRNode {
161162
type: IRNodeTypes.CREATE_TEXT_NODE
162163
id: number
163164
values?: SimpleExpressionNode[]
165+
jsx?: boolean
164166
}
165167

166168
export interface InsertNodeIRNode extends BaseIRNode {

0 commit comments

Comments
 (0)