mpvue 组件slot内容无法透传给子组件

du7egjpx  于 4个月前  发布在  其他
关注(0)|答案(2)|浏览(38)

当组件内部依赖其他子组件时,该组件的slot内容无法传递给其子组件

mpvue 1.0.13
mpvue-template-compiler 1.0.13
mpvue-loader 1.1.4

问题复现步骤:

App.vue

<card>hello world</card>

card.vue

<div>
  <item>
    <slot></slot>
  </item>
</div>

item.vue

<div>
  <slot></slot>
</div>

观察到的表现:

item无法获取$slotdefault,因为card的$slotdefault并未向下传递:

card.wxml

<view class="_div data-v-7e87584c card">
  <template name="default"></template>
  <template data="{{...$root[$kk+'1'], $root, $slotdefault:'data-v-7e87584c-default-1'}}" is="04c7720c"></template>
</view>

item.wxml

<view class="_div data-v-07699a5d item">
  <template name="default"></template>
  <template data="{{...$root[$k], $root}}" is="{{$slotdefault || 'default'}}"></template>
</view>

slots.wxml

<template name="data-v-41a81a3b-default-0"> hello world </template>
<template name="data-v-7e87584c-default-1">
  <template data="{{...$root[$k], $root}}" is="{{$slotdefault || 'default'}}"></template>
</template>

期望的表现:

如果内将card作用域内的$slotdefault赋值给新的变量,如$parentslotdefault,将item内解析出来的模板中data增加$slotdefault,就可以实现slot内容的透传,如下:
card.wxml

<view class="_div data-v-7e87584c card">
  <template name="default"></template>
  <template data="{{
...$root[$kk+'1'],
$root,
$slotdefault:'data-v-7e87584c-default-1',
$parentslotdefault:$slotdefault
}}" is="04c7720c"></template>
</view>

item.wxml

<view class="_div data-v-07699a5d item">
  <template name="default"></template>
  <template data="{{...$root[$k], $root, $slotdefault: $parentslotdefault}}" is="{{$slotdefault || 'default'}}"></template>
</view>
pxiryf3j

pxiryf3j1#

666刚好遇到了同样的问题,大佬正解了,求官方解决

aiqt4smr

aiqt4smr2#

借楼说一个场景,

<div v-for>
    <slot :name='variable'></slot>
</div>

通过v-for生成slot,转化后的代码 template is 属性值一直 为 $slotdefault.
需要同样在此issue传入$slotdefault的地方改动下传值方式。

相关问题