梗概
- 组件尽量不要使用经常频繁变动且不涉及自己的props
原理
在 Vue 之中,一个子组件只会在其至少一个 props 改变时才会更新。
实例
思考以下示例:
<ListItem
v-for="item in list"
:id="item.id"
:active-id="activeId" />- activeId是指选中某一个ID
在
<ListItem>组件中,它使用了id和activeId两个 props 来确定它是否是当前活跃的那一项。虽然这是可行的,但问题是每当activeId更新时,列表中的每一个<ListItem>都会跟着更新! 理想情况下,只有活跃状态发生改变的项才应该更新。我们可以将活跃状态比对的逻辑移入父组件来实现这一点,然后让<ListItem>改为接收一个activeprop:
<ListItem
v-for="item in list"
:id="item.id"
:active="item.id === activeId" />现在,对于大多数的组件来说,activeId 改变时,它们的 active prop 都会保持不变,因此它们无需再更新。总结一下,这个技巧的核心思想就是让传给子组件的 props 尽量保持稳定。