vue2 父级render导致子级不正确的render

需求是将父级接收到的插槽重命名后,再传递给子级

比如子级有一个extra插槽,父级就把自己的childExtra插槽传递给子级(为什么父级插槽要命名为childExtra?因为可能存在子级不同但子级需要的插槽的名称相同的情况)

但是现在发现,只要父级发生render,那么子级必然render(实际上不需要render)

如何解决?

应用场景:我现在已经有了ChildA、ChildB两个子组件(代码不能改),这俩都接收一个extra插槽,然后我想用Parent组件去包住这两个子组件:

<template>
  <div>
    <child-a/>
    <child-b/>
  </div>
</template>

并且把Parent接收到的extraA插槽传递给ChildA、把extraB插槽传递给ChildB

重现地址

重现步骤:打开console,点击按钮,控制台打印:

'parent render'
'child render'

期望中的控制台打印:

'parent render'
阅读 1.4k
1 个回答

// Any static slot children from the parent may have changed during parent's
// update. Dynamic scoped slots may also have changed. In such cases, a forced
// update is necessary to ensure correctness.

以上注释来自Vue源码
image

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题