Vue 未解决问题的结果

1. 在利用cli3创建项目时,具名插槽的使用无法显示,也没有报错

在vue.2.6.3 版本以后插槽的使用方法略改,匹配name属性时:

  1. 必须在 template 中标注
  2. 形式 v-slot:xxx


2.当我想要将父组件中的图片填充进插槽该怎么做?

既然仅仅用 img 不能使用插槽,那么我将 template 标签包裹在 img 外,这样就能使图片显示,插槽的功能就能正常使用


3.接下来的问题是,我怎么让 template 标签具有 div 标签具有的块级元素的特点?怎么让其分两行显示

 

解决:


总结:插槽的使用或者说组件的使用可以理解成直接面向对象的编程思想,将布局、排版、样式等统一定好之后,只需要调用某个组件或者某个插槽,将其中的内容直接调换即可,不必考虑其他的因素。
4.路由跳转中,push 和 replace 都无法使用的情况,报出

image.png

这种情况,该怎么解决?

    发现自己定义路由时,配置路由映射的routes 写成了 router,这时修改完之后仍会报错,经过查询CSD 后了解到应该是脚手架版本不同引发的,

在main.js 文件中

脚手架2 中创建 Vue 实例,引入router的方式如下

脚手架3 中创建的 Vue 实例的方式如下

脚手架4 中创建的 Vue 实例,引入router的方式如下

在index.js 文件中

在脚手架2 中导入vue-router

脚手架4 中导入vue-router

安装cli4
npm install vue-router@4

5. route 的区别在哪?

router 为 VurRouter的实例,相当于一个全局的路由器对象,里面含有很多属性和子对象,

route 相当于当前正在跳转的路由对象,可以从里面获得name、path、query等

6.路由传参的方式:

  1. 可以手写完整的path

    this.$router.push({path:'/user/${userId}'})
    
  1. 可以用parmas传递

    this.$router.push({name:'user',parmas:{ userId: 123}})
    
  2. 也可以用query传递

    this.$router.push({path:'register',query: { plan: 'private'}})
    

注意: 如果提供了path ,params 将被忽略,但是query不属于这种情况。如果使用完整路径和query传参,刷新页面时不会造成路由传参的参数丢失

那么params 和 query的区别有哪些?

6.什么是依赖?

从目前自我已知的角度来说就是利用第三方框架,通过百度 了解到一个叫做 :注入依赖

什么是**依赖注入**?允许一个祖先组件像其所有子孙后代注入一个依赖,不论组件层次有多深,并在起上下游关系成立的时间里始终生效。

不用关心dom层级 **这里肯定会有使用依赖时,层级影响使用的情况**,只要在祖先内部就可以一直使用祖先组件提供的 provide   

provide 选项允许我们指定我们想要提供给后代组件的数据或方法

然后在任何后代组件里,我们都可以使用 inject 选项来接收指定的我们想要添加在这个实例上的属性:

    祖先组件不需要知道哪些后代组件使用它提供的属性

    后代组件不需要知道被注入的属性来自哪里

provide / inject 是解决组件之间通信问题的利器,不受层级结构的限制但不是响应式的,但不能随便滥用,通信代表耦合(什么是耦合? 低耦合通俗来讲:写一个组件,在任何复杂的项目或任何复杂的场景下都可以即拿即用,高耦合的意思就是这个项目的组件,开发后只有一个场景好用,其他场景很难用,耦合度越高越说明组件的抽象程度和你对项目业务的理解越烂)

7.生命周期函数该怎么用?

    目前了解的生命周期钩子函数,分别有beforeCreate、created、beforeMount(组件挂载)、mounted、beforeUpdate(当这个钩子被调用时,组件 DOM 已经更新)、updated、activated(被 keep-alive 缓存的组件激活时调用,**该钩子在服务器端渲染期间不被调用。**)、deactivated

    这些生命周期函数在页面加载,组件创建,渲染等各个时刻自己会被调用

8.history 和 hash 模式?

默认是hash 模式

9.处理[Vue warn]: Failed to mount component: template or render function not defined. 错误解决方法

组件中没有添加