vue知识点总结2

一、 组件生命周期
beforeCreate  在实例初始化之后data observer和事件配置之前被调用

created   data 已经初始化,计算属性、event/watch事件回调,但dom属并未挂载

beforeMount  在挂载前被调用render函数首次被调用生成虚拟dom

mounted   挂载完成,dom树已经完成渲染到页面,可进行dom操作

beforeDestroy   清楚watcher 、 子组件事件监听器等

destroyed   组件销毁 所有数据和方法不可被访问

二、 组件之间的数据共享
组件之间的关系
1、父子关系

2、兄弟关系父组件向子组件共享数据
父组件:

<child :msg="message"></child>

data(){

        return{

        message:"hello"

}

}

子组件:

<div>{{msg}}</div>

export default {

        props:{

                msg:{type:string,default:nihao}

}

}

2.子组件向父组件共享数据
子组件:

export default{
         data(){
                return{
                        count:0
        }
},       

methods:{
           add(){
                        this.count++;
                         this.$emit('change-count',this.count)

                }

        }

}

父组件:

<child @change-count="changeCount"></child>

data(){

        return{

                parentCount:0

        }

}

methods:{

        changeCount(count){

                this.parentCount=count

        }

}

2.2.4 兄弟组件之间的数据共享
1、创建eventBus.js模块,并向外共享一个Vue的实例对象

2、在数据发送方,调用bus.$emit('事件名称',要发送的数据)方法触发自定义事件

3、在数据接收方,调用bus.$on('事件名称',事件处理函数)方法注册一个自定义事件

3.1 ref引用
ref用来辅助开发者在不依赖jQuery的情况下,获取DOM元素组件的引用

每个vue的组件实例上,都包含一个$refs对象,里面存储着对应的DOM元素和组件的引用。默认情况下,组建的$refs指向的一个空对象

<div ref="myRef">ref 组件</div>

<button @click="getRef">获取 $refs 引用</button>

methods: {
    getRef() {
      通过 this.$refs 引用的名称,可以获取到 DOM 元素的引用 
      console.log(this.$refs.myRef);
       操作 DOM 元素,把文本颜色改为红色 
      this.$refs.myRef.style.color = 'red';
    }
  }

3.1.2 路由
路由模式
1、hash路由

2、历史记录路由

mode:"hash"|"history"

哈希路由不依赖后端,刷新并没有问题

历史记录没有后端配置刷新会404

路由原理
地址栏更新页面不刷新,监听变化切换div模板页面的切换

哈希路由:监听onhashchange事件

历史路由:监听onpopstate

路由的配置
普通配置

{path:"路径",name:"名称",component:"组件"}

路由懒加载(vite打包需要二次处理)

{path:"路径",name:"名称",component:()=>import(组件)}

子路由

{path:"路径",name:"名称",component:组件,children:[

        {path:路径,component:组件},
        ...
]}

传参路由

{path:"/produce/:id",name:"名称",componnent:组件}

<router-link to="/produce/abc"></router-link>

$route.params.id

路由传参
1、路径传参

{path:"/produce/:id",name:"名称",component:组件}

<router-link to="/produce/abc"></router-link>

$route.params.id

2、query查询传参
<route-link to="/user?name=gs">

$route.query获取

3、meta 元数据传参
没有hasTabs 底部栏

{path:"/user",component:xxx,meta:{hasTabs:true}}

<router-view/>

<tabs v-if=""$route.meta.hasTabs></tabs>

keep-alive缓存路由页面
在原信息页面定义keep值为true会被缓存

{path:"category",meta:{keep:true},component:xxx}

App.vue

<keep-alive v-if="$route.meta.keep">

        <route-view/>

</keep-alive>

<route-view v-else/>

路由组件内部钩子函数
beforeRouteEnter(to,from,next){}

路由进入前(函数不能用this)

beforeRouteUpdate(to,from,next){}

路由更新前(/produce/123)=>(/produce/789)

beforeRouteLeave(to,from,next){}

路由离开前(还差一点就能获取。。。)

全局导航守卫构造函数
作用:权限管理,进入页面前操作(提前获取数据..)

判断to的meta是否需要鉴权,判断是否有token(是否登录)

有就next,没有就next("/login")

一定要有next被执行

1、beforeEach((to,from,next)=>{})

2、afterEeach((to,from)=>{})

路由独享守卫
{path:"",component:xx,beforeEnter:(to,from,next){}}

vuex
什么是vuex:
vuex是应用程序开发的状态管理模式,它采用 了集中式存储管理的应用的所有组件状态

什么时候用vuex
多个视图使用同一个状态:传参的方法对于多层嵌套的组件将会很麻烦,当你使用vuex这个状态会在你的项目任何地方都可以使用这个状态;

不同试图需要变同一个状态:采用父子组件或者通过事件来变更和同步状态的多份拷贝,通常会导致无法维护代码

使用vuex的注意事项
1、数据都是单项向的

2、组件能够调用actions

3、actions用来派发mutations

4、只有mutation可以改变状态

5、store是响应式的,无论state什么时候更新,组件都会同步更新

vuex与Storage的几个区别
1、从存储位置来说,vuex用的是内存,而Storage用的是文件存储;

2、从易失性来说,vuex与页面的生命周期相同(如关闭页面、刷新数据就会消失),而localStorage是永久存储的,sessionStorage生存于应用会话期间;

3、从存储空间来看,vuex取决于内存和浏览器的限制,Storage都有个默认的大小(至少5MB,浏览器决定),超出大小则需要用户同意增加空间;

4、从共享来看,vuex无法跨标签、跨物理页面共享、而Storage则可以在同一域名地下共享;

5、从用途来看,vuex是用于管理页面内容及组件的状态,而Storage主要是用于存储数据;

另外,缓存是应用级的概念,你可以根据需要,采用符合要求的存储来做缓存。因此,vuex也可以作为缓存来使用。同时,浏览器通常也会为应用提供缓存设施。现代浏览器都会提供几个类别的存储:

1、storage:包括LocalStorage、Session Storage、WebSQL、Cookies等;

2、其他文件缓存,如图片、请求等;

vuex中的五大函数的作用

1、state : 统一定义公共数据(类似于data()return)

2、mutations:使用它来修改数据

3、getters:类似于computed(计算属性,对现有的状态进行计算得到新的)

4、actions:发起异步请求

5、modules:模块拆分

vuex的工作流程
首先通过dispatch去提交一个actions,在actions接收到这个事件后,在actions中进行一些异步或同步操作,根据情况分发给不同的mutations,actions通过commit触发mutations,然后mutations去更新state,在state更新后,就会通知vue进行渲染。步骤如下

1、通过dispatch去提交一个actions

2、在actions接收到事件后,在actions中执行一些异步或者同步操作

3、根据不同的情况分发给不同的mutations,actions通过commit触发mutations

4、mutations在触发后就会去更新state

5、在state更新完毕后,就会通知vue进行渲染
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值