当前位置: 首页 > Web前端 > JavaScript

保证你不知道的Vue3技能

时间:2023-03-27 17:07:50 JavaScript

//无法设置MyChildComponent的p标签的样式。.my-p{颜色:红色;}:deep(.my-p){颜色:红色;}微信搜索【大招天下】,第一时间为大家分享前端行业动态、学习路径等。本文已收录到GitHubhttps://github.com/qq449245884/xiaozhi,里面有完整的测试站点、资料和我的一线厂商访谈系列文章。VNodehooks在每个组件或HTML标签上,我们可以使用一些特殊的(未记录的)钩子作为事件监听器。这些钩子是:.例如:需要注意的是,这些钩子会向回调函数传递一些参数。除了onVnodeBeforeUpdate和onVnodeUpdated传递两个参数,即当前VNode和上一个VNode外,其他只传递一个参数,即当前VNode。调试钩子我们都知道Vue为我们提供的生命周期钩子。但是你可能不知道,Vue3还给了我们两个钩子,可以用来调试?它们是:onRenderTrackedonRenderTriggered将在响应依赖项的变化触发组件渲染时被调用onRenderTracked注册一个调试钩子,当响应依赖项的变化触发组件渲染调用onRenderTriggered:从子组件中暴露插槽有时,当我们使用第三方组件时,我们会将其实现包装在我们的自定义组件中。这是一个很好的实践和可扩展的解决方案,但这样一来,第三方组件的插槽就会丢失。以下方法可以将它们的插槽暴露给父组件:WrapperComponent.vue

现在每个使用WrapperComponent的组件都可以使用第三方组件的插槽。具有多个根的子组件不能从父作用域的样式中设置样式在Vue3中,我们可以使用多个根组件,这很好,但我遇到了设计限制。假设我有一个子组件:和父组件://无法设置MyChildComponent的p标签的样式。.my-p{颜色:红色;}:deep(.my-p){颜色:红色;}无法从多根父组的作用域样式向子组件的p标签添加样式。简而言之,具有多个根节点的子组件不能从父范围样式中设置样式。解决此问题的最佳方法是包装父组件或子组件(或两者),以便我们只有一个根元素。但是如果你只想使用两个根组件,你可以使用:removescoped:使用css模块:.trick{color:red;}因为我们这里指定的是一个类,所以有多个子组件的属性失效行为必须明确指定。使用CSS选择器时要小心#main-nav>li{}与.my-li{color:red}相比会慢很多倍。来自文档:由于浏览器呈现各种CSS选择器的方式,p{color:red}在范围内(即与属性选择器结合使用时)会慢很多倍。如果您改用类或ID,例如.example{color:red},几乎消除了这种性能损失。布尔运算在Vue2或Vue3的早期版本中,我们对布尔类型的道具有不同的行为,具体取决于顺序。第一种情况:props:{hoverColor:[String,Boolean]//<-默认为''}第二种情况:props:{hoverColor:[Boolean,String]//<-默认为false}不仅如此,如果传递likethis:在第一种情况下它将是一个空字符串''。在第二种情况下是正确的。这有点混乱和不一致。幸运的是,在Vue3中,我们有一个新的一致且可预测的行为:无论顺序如何,都会采用布尔行为,这是第二种情况。所以:hoverColor:[String,Boolean]//<-默认为falsehoverColor:[Boolean,String]//<-默认为falsehoverColor:[Boolean,Number]//<-默认为falseusingrefinv-for,The以下代码不保证顺序:我们在列表数组中循环,并创建一个itemRefs数组。不保证itemRefs与列表数组具有相同的顺序。如果您想了解更多相关信息,可以阅读本期。地址:https://github.com/vuejs/core...最后,感谢阅读。编辑过程中可能存在的BUG无法实时获知。之后为了解决这些bug,花费了大量的时间在日志调试上。顺便推荐一个好用的BUG监控工具Fundebug。来源:https://dev.to/the_one/vue-3-...交流有梦想,有干货,微信搜索【大千世界】关注这位凌晨还在洗碗的洗碗智慧。本文GitHubhttps://github.com/qq44924588...已收录,有完整的测试站点、资料和我的一线厂商访谈系列文章。