From: zhiyuanzmj <260480378@qq.com> Date: Fri, 28 Feb 2025 09:06:19 +0000 (+0800) Subject: feat(compiler-vapor): add jsx support for setText and createTextNode (#12893) X-Git-Tag: v3.6.0-alpha.1~16^2~51 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=5452404b71e4957649af04a3a351ac7bcafd30b6;p=thirdparty%2Fvuejs%2Fcore.git feat(compiler-vapor): add jsx support for setText and createTextNode (#12893) --- diff --git a/packages/compiler-vapor/src/generators/text.ts b/packages/compiler-vapor/src/generators/text.ts index 3c9835f88b..280d0a9183 100644 --- a/packages/compiler-vapor/src/generators/text.ts +++ b/packages/compiler-vapor/src/generators/text.ts @@ -14,8 +14,8 @@ export function genSetText( context: CodegenContext, ): CodeFragment[] { const { helper } = context - const { element, values, generated } = oper - const texts = combineValues(values, context) + const { element, values, generated, jsx } = oper + const texts = combineValues(values, context, jsx) return [ NEWLINE, ...genCall(helper('setText'), `${generated ? 'x' : 'n'}${element}`, texts), @@ -27,13 +27,13 @@ export function genCreateTextNode( context: CodegenContext, ): CodeFragment[] { const { helper } = context - const { id, values } = oper + const { id, values, jsx } = oper return [ NEWLINE, `const n${id} = `, ...genCall( helper('createTextNode'), - values && combineValues(values, context), + values && combineValues(values, context, jsx), ), ] } @@ -41,15 +41,16 @@ export function genCreateTextNode( function combineValues( values: SimpleExpressionNode[], context: CodegenContext, + jsx?: boolean, ): CodeFragment[] { return values.flatMap((value, i) => { let exp = genExpression(value, context) - if (getLiteralExpressionValue(value) == null) { + if (!jsx && getLiteralExpressionValue(value) == null) { // dynamic, wrap with toDisplayString exp = genCall(context.helper('toDisplayString'), exp) } if (i > 0) { - exp.unshift(' + ') + exp.unshift(jsx ? ', ' : ' + ') } return exp }) diff --git a/packages/compiler-vapor/src/ir/index.ts b/packages/compiler-vapor/src/ir/index.ts index 1509d37424..6616e35e91 100644 --- a/packages/compiler-vapor/src/ir/index.ts +++ b/packages/compiler-vapor/src/ir/index.ts @@ -121,6 +121,7 @@ export interface SetTextIRNode extends BaseIRNode { element: number values: SimpleExpressionNode[] generated?: boolean // whether this is a generated empty text node by `processTextLikeContainer` + jsx?: boolean } export type KeyOverride = [find: string, replacement: string] @@ -161,6 +162,7 @@ export interface CreateTextNodeIRNode extends BaseIRNode { type: IRNodeTypes.CREATE_TEXT_NODE id: number values?: SimpleExpressionNode[] + jsx?: boolean } export interface InsertNodeIRNode extends BaseIRNode {