feat(compiler-vapor): add jsx support for setText and createTextNode (#12893)
This commit is contained in:
parent
a95b5e70e6
commit
5452404b71
|
@ -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
|
||||
})
|
||||
|
|
|
@ -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 {
|
||||
|
|
Loading…
Reference in New Issue