vue 子组件获取prop的变化(vue中props值怎么在方法中使用),本文通过数据整理汇集了vue 子组件获取prop的变化(vue中props值怎么在方法中使用)相关信息,下面一起看看。

   vue3组件如何通过props传递数据来获取更新的dom?现在有这样的要求,固定宽度的显示框内容超过隐藏内容,给出提示内容。该方案通过判断dom的scrollWidth和offsetWidth之间的大小来决定是否省略隐藏

   vue3组件如何通过props传递数据来获取更新的dom?

  现在有一个要求,固定宽度的显示框超过隐藏内容,给出提示内容。

  解决办法

  使用dom的scrollWidth和dom的offsetWidth,通过判断两者之间的大小来决定是否省略隐藏。当然,也可以使用getBoundingClientRect api来获取dom的宽度。

  然后用element-plus中的el-tooltip组件封装它。

  遇到的问题

  以上方案可行,但问题在于如何动态监控dom的宽度来动态省略和隐藏。我相信它和我的一样好。一开始想在子组件里更新的hook函数里操作这个dom,结果事与愿违。请看下图,大致意思是如果组件更新后需要操作dom,请使用nextTick()。

  如何解决

  问题找到了,但是如何解决,如何合理使用nextTick()。至于nextTick()的原理,只给出一个大概的思路。

   NextTick(),它在下一个DOM更新周期结束后执行延迟的回调。使用此方法可以在修改数据后立即获取更新的DOM。

  由于updated中无法获取ref的实例,所以我认为watch()的api有三个参数,我将重点放在第三个参数上。

  除了这些属性{deep: true,immediate:true}之外,第三个参数中的另一个属性是flush:\post\ ,因为需要动态监控数据的宽度是否超过隐藏。因为nextTick() api不能在watch中使用,那是什么意思?请看下面

  我们看到在vue中,首先执行监听器,然后更新dom。第一次是null,因为dom还没有生成。当我点击第一次和第二次时,执行监听器,然后获取最后一个dom内容,最后执行update来触发更新。

  让我们添加flush:\post\ 然后执行它。

  摘要

  最后,如果我们需要在更新watch中的数据后获取最新的dom,我们可以添加一个flush: \post\ 属性来获取摘要。

  主要是监控watch中数据的变化来获取dom的变化,最终做出实时的响应变化。

  世上无难事,只要你肯放弃,加油。

  更多vue 子组件获取prop的变化(vue中props值怎么在方法中使用)相关信息请关注本站,本文仅仅做为展示!