@@ -10,11 +10,11 @@ import {
1010} from '../ir'
1111import {
1212 createSimpleExpression ,
13+ getTextLikeValue ,
1314 isJSXComponent ,
1415 isTemplate ,
1516 isValidHTMLNesting ,
1617 resolveExpression ,
17- resolveSimpleExpression ,
1818 type SimpleExpressionNode ,
1919} from '../utils'
2020import type {
@@ -227,7 +227,7 @@ export function buildProps(
227227 continue
228228 }
229229
230- const result = transformProp ( prop , node , context )
230+ const result = transformProp ( prop , node , isComponent , context )
231231 if ( result ) {
232232 dynamicExpr . push ( result . key , result . value )
233233 if ( isComponent && ! result . key . isStatic ) {
@@ -259,6 +259,7 @@ export function buildProps(
259259function transformProp (
260260 prop : JSXAttribute | JSXSpreadAttribute ,
261261 node : JSXElement ,
262+ isComponent : boolean ,
262263 context : TransformContext < JSXElement > ,
263264) : DirectiveTransformResult | void {
264265 if ( prop . type === 'JSXSpreadAttribute' ) return
@@ -270,18 +271,18 @@ function transformProp(
270271 : ''
271272 name = name . split ( '_' ) [ 0 ]
272273
274+ let value
273275 if (
274276 ! isDirectiveRegex . test ( name ) &&
275277 ! isEventRegex . test ( name ) &&
276- ( ! prop . value || prop . value . type === 'StringLiteral' )
278+ ( ! prop . value || ( value = getTextLikeValue ( prop . value , isComponent ) ) != null )
277279 ) {
278280 if ( isReservedProp ( name ) ) return
279281 return {
280- key : resolveSimpleExpression ( name , true , prop . name . loc ! ) ,
281- value :
282- prop . value && prop . value . type === 'StringLiteral'
283- ? resolveSimpleExpression ( prop . value . value , true , prop . value . loc ! )
284- : createSimpleExpression ( 'true' , false ) ,
282+ key : createSimpleExpression ( name , true , prop . name ) ,
283+ value : prop . value
284+ ? createSimpleExpression ( value ! , true , prop . value )
285+ : createSimpleExpression ( 'true' ) ,
285286 }
286287 }
287288
0 commit comments