你需要知道的Vue3七大技巧
时间:2023-03-14 20:33:32
科技观察
//MyChildComponent.my-p的p标签无法设置样式-p{color:red;}:deep(.my-p){颜色:红色;}vue3自2022年9月正式发布以来,在源代码、性能、语法API等方面进行了极大的优化。如果你想学习Vue,可以从今天开始学习本文的内容。在这篇文章中,我和大家分享了Vue3的7个开发技巧,希望对大家有所帮助。让我们现在开始吧。1.VNodehook在每个组件或者html标签上,我们可以使用一些特殊的(文档没写)hooks作为事件监听器。这些钩子是:.<脚本设置>import{ref}from'vue'constcount=ref(0)functiononMyComponentMounted(){}functiondivThatDisplaysCountWasUpdated(){}{{count}}
示例如下:需要注意的是,这些钩子传递了一些参数给回调函数。它们只传递一个参数,当前的VNode,除了onVnodeBeforeUpdate传递了onVnodeUpdated两个参数,当前的VNode和上一个VNode。2.调试钩子我们都知道Vue为我们提供的生命周期钩子。但是您知道Vue3为我们提供了两个可用于调试目的的钩子吗?它们是:onRenderTrackedonRenderTriggeredonRenderTracked为每个已跟踪的反应依赖项调用。onRenderTriggered在我们触发反应式更新时被调用,或者如文档所说:“当反应式依赖触发组件的渲染效果重新运行时”。3.来自子组件公开插槽如果您使用的是第三方组件,您可能会将其实现包装在您自己的“包装器”组件中。这是一个很好的实践和可扩展的解决方案,但是第三方组件的插槽将会丢失,我们应该找到一种方法将它们暴露给父组件:WrapperComponent.vue
现在每个使用WrapperComponent的组件可以使用ThirdPartyComponent的插槽。4.作用域样式和多个根节点不能很好地协同工作在Vue3中,我们终于可以拥有多个“一个根节点”组件。这很好,但我个人在这样做时遇到了设计限制。假设我们有一个子组件:
FirstpSecondp和一个父组件:
Myawesomecomponent
//MyChildComponent.my-p的p标签无法设置样式-p{color:red;}:deep(.my-p){颜色:红色;}不可能从多根父组件的作用域样式中设置子组件的p标签的样式。所以简而言之,多根组件不能使用作用域样式来针对多个子组件的样式。解决这个问题的最好方法是包装父组件或子组件(或两者),这样我们就只有一个根元素。但是如果你绝对需要为两者都有多个根节点,你可以:使用无范围样式使用css模块既然我们在这里指定了一个类,那么多个根子组件就得显式指定属性fallthrough行为。如果你想要我的意见,除非你绝对需要一个多根节点组件,否则使用单个根节点并且根本不要处理这个设计限制。5.使用CSS选择器时要小心#main-nav>li{}会比.my-li{color:red}慢很多倍。来自文档:由于浏览器呈现各种CSS选择器的方式,p{color:red}在范围内(即当与属性选择器结合时)慢很多倍。如果您改用类或ID,例如.example{color:red},那么您几乎可以消除性能损失。如果您想更深入地研究这个主题,我强烈建议您阅读EfficientlyRenderingCSS。6.布尔值转换在Vue2或Vue3早期版本中,对于boolean类型的props,我们根据顺序有不同的行为:第一种情况:props:{hoverColor:[String,Boolean]//<-defaultsto''第二种情况:props:{hoverColor:[Boolean,String]//<-默认为false}不仅如此,如果你像这样传递prop:在第一个情况下它将是一个空字符串''。在第二种情况下,它会是真的。如您所见,它有点混乱和不一致。幸运的是,在Vue3中,我们有一个新的一致且可预测的行为:无论类型出现的顺序如何,布尔行为都会应用。所以:hoverColor:[String,Boolean]//<-默认为falsehoverColor:[Boolean,String]//<-默认为falsehoverColor:[Boolean,Number]//<-默认为false7.带有v-for引用的模板-订单不保证请记住这一点,这样您就不会浪费数小时的调试时间来弄清楚发生了什么在以下代码中:我们遍历列表数组并创建itemRefs数组。不保证itemRefs与列表数组具有相同的顺序。如果您想了解更多相关信息,可以阅读本期。综上所述,以上就是我今天分享给大家的关于Vue3的7个tips。我希望这些提示对您有所帮助。谢谢阅读。