官术网_书友最值得收藏!

Key attribute

For now, if you try the animation in the browser, it should only work in two cases:

  • When you don't have any overlay displayed, and you set one
  • When you have an overlay shown and you set activeOverlay to null to hide it

If you switch between the overlays, the animation will not work. This is because of the way Vue updates the DOM; as we saw earlier in the The key special attribute section, it will reuse DOM elements as much as possible to optimize performance. In that case, we will need to use the key special attribute to give Vue a hint that we would like to treat the different overlays as separate elements. So, when we transition from one overlay to the other, both will be present in the DOM, and the animations can be played.

Let's add the key to our overlay component so that Vue will treat it as multiple separate elements when we change the activeOverlay value:

<transition name="zoom">
<overlay v-if="activeOverlay" :key="activeOverlay">
<component :is="'overlay-content-' + activeOverlay" :player="currentPlayer" :opponent="currentOpponent" :players="players" />
</overlay>
</transition>

Now, if we set activeOverlay to 'player-turn', the overlay will have a key of 'player-turn'. Then, if we set activeOverlay to 'last-play', an entirely new overlay will be created with a key of 'last-play', and we can animate the transition between the two. You can try this in the browser by setting different values to state.activeOverlay.

主站蜘蛛池模板: 连州市| 申扎县| 怀集县| 龙陵县| 奉节县| 江陵县| 长岭县| 南宫市| 大悟县| 张家港市| 策勒县| 平凉市| 蓬莱市| 延川县| 连云港市| 遂川县| 宝鸡市| 宁城县| 菏泽市| 徐闻县| 灵武市| 平顺县| 海兴县| 会同县| 乌鲁木齐市| 洛阳市| 平塘县| 浪卡子县| 蓝田县| 甘泉县| 大新县| 靖安县| 平定县| 久治县| 武鸣县| 贵港市| 姚安县| 常熟市| 襄汾县| 布拖县| 民县|