diff --git a/packages/uni-cli-shared/src/mp/template.ts b/packages/uni-cli-shared/src/mp/template.ts index a3542f471c85e94ac8732430796f7f76bfa05f63..aaafb5bfdd1d85bf8f81a175d712cb58eaf0cc27 100644 --- a/packages/uni-cli-shared/src/mp/template.ts +++ b/packages/uni-cli-shared/src/mp/template.ts @@ -24,7 +24,11 @@ export interface MiniProgramCompilerOptions { /** * 是否支持后备内容 */ - fallback?: boolean + fallbackContent?: boolean + /** + * 是否支持动态插槽名 + */ + dynamicSlotNames?: boolean } filter?: { lang: string diff --git a/packages/uni-mp-alipay/dist/uni.compiler.js b/packages/uni-mp-alipay/dist/uni.compiler.js index 839b7064e7acd3bac1260deca18841762c048403..56ee0ad18520950f0f1b28feb602ca9ee7b99d22 100644 --- a/packages/uni-mp-alipay/dist/uni.compiler.js +++ b/packages/uni-mp-alipay/dist/uni.compiler.js @@ -188,7 +188,8 @@ const miniProgram = { slot: { $slots: true, // 支付宝 fallback 有 bug,当多个带默认 slot 组件嵌套使用时,所有的默认slot均会显示,如uni-file-picker(image) - fallback: false, + fallbackContent: false, + dynamicSlotNames: true, }, directive: 'a:', }; diff --git a/packages/uni-mp-alipay/src/compiler/options.ts b/packages/uni-mp-alipay/src/compiler/options.ts index b4e8a82051b24bdb34ec0e4ce2b954bdf3ff6427..433f5dcc031bcea2e4bba4f0f946bec657f03048 100644 --- a/packages/uni-mp-alipay/src/compiler/options.ts +++ b/packages/uni-mp-alipay/src/compiler/options.ts @@ -26,7 +26,8 @@ export const miniProgram: MiniProgramCompilerOptions = { slot: { $slots: true, // 支付宝 fallback 有 bug,当多个带默认 slot 组件嵌套使用时,所有的默认slot均会显示,如uni-file-picker(image) - fallback: false, + fallbackContent: false, + dynamicSlotNames: true, }, directive: 'a:', } diff --git a/packages/uni-mp-baidu/dist/uni.compiler.js b/packages/uni-mp-baidu/dist/uni.compiler.js index f666d449df43572b7fcf6ca71ca6cb44830962c8..4d2c6982c75c82672ccd75f3af4d822ef734ce28 100644 --- a/packages/uni-mp-baidu/dist/uni.compiler.js +++ b/packages/uni-mp-baidu/dist/uni.compiler.js @@ -155,7 +155,8 @@ const miniProgram = { array: true, }, slot: { - fallback: true, + fallbackContent: true, + dynamicSlotNames: false, }, directive: 's-', }; diff --git a/packages/uni-mp-baidu/src/compiler/options.ts b/packages/uni-mp-baidu/src/compiler/options.ts index 8e643972c9ad0a9dfe6207e88917ac89160320f3..f7ee57e12570fc9429a79b6674718b60c3ce4f96 100644 --- a/packages/uni-mp-baidu/src/compiler/options.ts +++ b/packages/uni-mp-baidu/src/compiler/options.ts @@ -23,7 +23,8 @@ export const miniProgram: MiniProgramCompilerOptions = { array: true, }, slot: { - fallback: true, + fallbackContent: true, + dynamicSlotNames: false, }, directive: 's-', } diff --git a/packages/uni-mp-compiler/__tests__/slot.fallback.spec.ts b/packages/uni-mp-compiler/__tests__/slot.fallback.spec.ts index 9a9cb83c8adcd69383db7593a76cf9cc3b445e07..570f772cb9f772c2a854d980eb7b562f36bd7cc6 100644 --- a/packages/uni-mp-compiler/__tests__/slot.fallback.spec.ts +++ b/packages/uni-mp-compiler/__tests__/slot.fallback.spec.ts @@ -4,7 +4,7 @@ const options = { miniProgram: { ...miniProgram, slot: { - fallback: true, + fallbackContent: true, }, }, } diff --git a/packages/uni-mp-compiler/__tests__/testUtils.ts b/packages/uni-mp-compiler/__tests__/testUtils.ts index 6230ab8a1ed1dbc0986bfac377727cba97735b2a..3a51451daca77b160379692b2895d91203c375f7 100644 --- a/packages/uni-mp-compiler/__tests__/testUtils.ts +++ b/packages/uni-mp-compiler/__tests__/testUtils.ts @@ -8,7 +8,8 @@ export const miniProgram: MiniProgramCompilerOptions = { array: true, }, slot: { - fallback: false, + fallbackContent: false, + dynamicSlotNames: true, }, directive: 'wx:', } as const diff --git a/packages/uni-mp-compiler/src/template/codegen.ts b/packages/uni-mp-compiler/src/template/codegen.ts index e4710f097b38a22cf24ee1f28aac025902ecc733..a946103923c7d97a9f010b5a8612b7dabc7cb864 100644 --- a/packages/uni-mp-compiler/src/template/codegen.ts +++ b/packages/uni-mp-compiler/src/template/codegen.ts @@ -124,7 +124,7 @@ function genVFor( function genSlot(node: SlotOutletNode, context: TemplateCodegenContext) { // 移除掉所有非name属性,即移除作用域插槽的绑定指令 node.props = node.props.filter((prop) => prop.name === 'name') - if (!node.children.length || context.slot.fallback) { + if (!node.children.length || context.slot.fallbackContent) { // 无后备内容或支持后备内容 return genElement(node, context) } diff --git a/packages/uni-mp-compiler/src/transform.ts b/packages/uni-mp-compiler/src/transform.ts index b22d2ee187c8bcd2370fb3b2387fd525cd39ddae..94523b76bf130b4dc7d4e3befc17670e8a34cfcf 100644 --- a/packages/uni-mp-compiler/src/transform.ts +++ b/packages/uni-mp-compiler/src/transform.ts @@ -257,7 +257,8 @@ export function createTransformContext( array: true, }, slot: { - fallback: false, + fallbackContent: false, + dynamicSlotNames: true, }, directive: '', }, diff --git a/packages/uni-mp-qq/dist/uni.compiler.js b/packages/uni-mp-qq/dist/uni.compiler.js index 7ca1f13cf6dad771623eb60c267a241ec7234cb5..a186661bdcd6a1e4b1833d9a7034ecec4e41fb8d 100644 --- a/packages/uni-mp-qq/dist/uni.compiler.js +++ b/packages/uni-mp-qq/dist/uni.compiler.js @@ -98,7 +98,8 @@ const miniProgram = { array: true, }, slot: { - fallback: false, + fallbackContent: false, + dynamicSlotNames: true, }, directive: 'qq:', }; diff --git a/packages/uni-mp-qq/src/compiler/options.ts b/packages/uni-mp-qq/src/compiler/options.ts index 7e581f1dc1ff87f2c914e032541a6b20b91e627b..488d91339c94f17fbce2271cf53535988fa29fba 100644 --- a/packages/uni-mp-qq/src/compiler/options.ts +++ b/packages/uni-mp-qq/src/compiler/options.ts @@ -28,7 +28,8 @@ export const miniProgram: MiniProgramCompilerOptions = { array: true, }, slot: { - fallback: false, + fallbackContent: false, + dynamicSlotNames: true, }, directive: 'qq:', } diff --git a/packages/uni-mp-toutiao/dist/uni.compiler.js b/packages/uni-mp-toutiao/dist/uni.compiler.js index 7d65a8c4b05a6a2ff4f7167030592dd464c1ca92..29fe42059261f3d6521a5b2491d59ad16d715e89 100644 --- a/packages/uni-mp-toutiao/dist/uni.compiler.js +++ b/packages/uni-mp-toutiao/dist/uni.compiler.js @@ -35,7 +35,8 @@ const miniProgram = { array: false, }, slot: { - fallback: true, + fallbackContent: true, + dynamicSlotNames: true, }, directive: 'tt:', }; diff --git a/packages/uni-mp-toutiao/src/compiler/options.ts b/packages/uni-mp-toutiao/src/compiler/options.ts index 837cff683f99fbc0229fa7ada62c576a12688ef8..1a5766b714ce62ab1b45556f8088236f948edf06 100644 --- a/packages/uni-mp-toutiao/src/compiler/options.ts +++ b/packages/uni-mp-toutiao/src/compiler/options.ts @@ -31,7 +31,8 @@ export const miniProgram: MiniProgramCompilerOptions = { array: false, }, slot: { - fallback: true, + fallbackContent: true, + dynamicSlotNames: true, }, directive: 'tt:', } diff --git a/packages/uni-mp-weixin/dist/uni.compiler.js b/packages/uni-mp-weixin/dist/uni.compiler.js index b35a931a99f1fbf0a79071744406e12eba06c9c4..40b3c5a6d5c01390aec45fb618cb42becb26e4ab 100644 --- a/packages/uni-mp-weixin/dist/uni.compiler.js +++ b/packages/uni-mp-weixin/dist/uni.compiler.js @@ -72,7 +72,8 @@ const miniProgram = { array: true, }, slot: { - fallback: false, + fallbackContent: false, + dynamicSlotNames: true, }, directive: 'wx:', }; diff --git a/packages/uni-mp-weixin/src/compiler/options.ts b/packages/uni-mp-weixin/src/compiler/options.ts index afd142760922d416ae9909a33848ea4b8aee9adc..32023911fc5dde27f2b8e8b12a6c1b15106996d0 100644 --- a/packages/uni-mp-weixin/src/compiler/options.ts +++ b/packages/uni-mp-weixin/src/compiler/options.ts @@ -29,7 +29,8 @@ export const miniProgram: MiniProgramCompilerOptions = { array: true, }, slot: { - fallback: false, + fallbackContent: false, + dynamicSlotNames: true, }, directive: 'wx:', }