这是开发人员遇到的一种非常常见的情况,即多个路由解析到同一个 Vue 组件。
然而,问题在于 Vue 优化了你的应用程序并重用现有组件而不是创建新组件。因此,如果你尝试在使用相同组件的路由之间切换,则不会有任何改变。
路由器.jsconstroutes = [{path: "/a",component: MyComponent},{path: "/b",component: MyComponent},];
要解决此问题,你需要在
现在,你的应用将不会重用现有组件,并且会在你切换路由时更新你的内容。
删除事件侦听器是 Javascript 一种常见的实践,因为它有助于避免内存泄漏并防止事件冲突。
在Vue中添加/删除组件事件监听器时,我们分别使用了mounted和beforeDestroy的生命周期钩子。这是一个典型的设置。
mounted () {window.addEventListener('resize', this.resizeHandler);},beforeDestroy () {window.removeEventListener('resize', this.resizeHandler);}
在典型的模式中,我们必须在组件选项对象中单独声明这些钩子。这样做的一个问题是,对于较大的组件,这些选项可能相隔数百行。
但是,查看 Vue 文档,我们看到有一个实例方法 $on 用于侦听实例事件。
此外,VueJS 生命周期钩子会在触发时发出自定义事件。事件名称是“hook:”hook+本身的名称(例如,hook:创建)
结合这两个技巧,我们可以编写用于在挂载方法内部添加和删除的代码。代码看起来像这样。
mounted () {window.addEventListener('resize', this.resizeHandler);this.$on("hook:beforeDestroy", () => {window.removeEventListener('resize', this.resizeHandler); })}
这意味着我们不必定义另一个生命周期hook。这样可以大大提高代码可读性的东西。
生命周期hook发出自定义事件,这一事实意味着父组件可以侦听其子组件的生命周期hook。
它将使用正常模式来侦听事件 (@event),并且可以像其他自定义事件一样进行处理。
Vue Watchers是添加高级功能(例如 API 调用)的好方法,该功能在观察到的值发生变化时运行。
但是,默认情况下,观察者不会在初始化时运行。根据你的功能,这可能意味着某些数据未完全初始化。
watch: {title: (newTitle, oldTitle) => { console.log("Title changed from " + oldTitle + " to " + newTitle) }}
如果你需要你的观察者在实例初始化后立即运行,你所要做的就是将你的观察者转换成一个具有处理程序 (newVal, oldVal)函数和一个 immediate: true 属性的对象。
其代码可能如下所示。
watch: {title: { immediate: true,handler(newTitle, oldTitle) { console.log("Title changed from " + oldTitle + " to " + newTitle) } }}
验证 props 是 Vue 中的基本实践之一。它甚至在VueJS 官方样式指南中被列为“优先级 A:基本”样式规则。
为什么重要?
它基本上可以从现在的你中拯救未来的你。在设计大型项目时,很容易忘记你用于prop的确切格式、类型和其他约定。
如果你在一个更大的开发团队中,你的同事不会读心术,所以让他们清楚如何使用你的组件!
因此,让每个人都不必费力地跟踪你的组件以确定道具的格式,并且只需编写prop验证即可。
在设计大型项目时,很容易忘记你用于prop的确切格式、类型和其他约定。
这是 VueJS 样式指南中的 prop 验证示例。
props: {status: { type: String, required: true, validator: function (value) { return ['syncing','synced','version-conflict','error' ].indexOf(value) !== -1 } }}
说到 props,了解如何将所有props 从父组件传递到其子组件之一很有用。
有大量的用例,但是当你的项目具有非常分层的结构时,它特别方便。
这很简单——你只需要记住你的实例属性!
如果你真的想成为一名 VueJS 开发专家,你需要了解所有不同的组件选项、何时使用它们以及为什么使用它们。
你会的,别担心。
这只是需要时间,但是在花费越来越多的时间在 VueJS 中工作并致力于学习顶级技巧、最佳实践和新方法之后,你很快就会成为超级开发人员。
前端开发就是利用各种Web技术进行产品的界面开发...
让学生快速达到一名UI界面设计师的标准...
广阔的发展空间,需要新型的技术人员...
高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。...
云服务器是一种简单高效、处理能力可弹性伸缩的计算服务。...
TEL:010-83650488
北京校区:北京市丰台区西四环 46号国润商务大厦B座8层
TEL:010-83650488
面授课程:web前端工程师、UI视觉设计师、PHP开发工程师、Python人工智能、Linux运维架构师、大数据开发培训
金源万博长春校区:长春市朝阳区 人民大街繁荣路航空国际A座1005室
TEL:13351548727
面授课程:web前端工程师、UI视觉设计师、PHP开发工程师、Python人工智能、Linux运维架构师、大数据开发培训
衡水校区:衡水市桃城区和平路顺兴街保成创业园南区2层
TEL:15501218001
面授课程:web前端工程师、UI视觉设计师、PHP开发工程师、Python人工智能、Linux运维架构师、大数据开发培训