• Vue2.x 常用功能和方法


    Vue 生命周期

    • beforeCreate (组件实例刚被创建,组件属性计算之前,如 data 属性等)
    • created (组件实例创建完成, 属性已绑定,但 DOM 还未生成, $el 属性不存在)
    • beforeMount-比佛毛特儿 (模版编译/挂载之前)
    • mounted-某儿得 (模版编译/挂载之后-不保证组件已在 document 中)
    • beforeUpdate (组件更新之前)
    • updated (组件更新之后)
    • activated (for keep-alive 组件被激活时被调用)
    • deactivated-滴阿克味得 (for keep-alive 组件被移除时调用)
    • deforeDestory-滴佛丝得瑞 (组件销毁前调用)
    • destoryed-滴丝尊儿 (组件销毁后调用)

    Vue 钩子函数

    • methods-马甚丝 (对象中定义方法)
    • computed (计算属性)

    Vue 组件通信

    父组件和子组件通信

    • props-破软丝 (传值)
    • ref-瑞府 (调用子组件的方法)
    // 子组件
    <div>
      <p class="title">{{ title }}</p>
    </div>
    export default {
      props: {
        title: {
          type: String,
          default: "",
        },
      },
      methods:{
          show(data){
              console.log('----', data)
          },
      }
    };
    // 父组件
    <MenuNav :title="title" ref="MenuNav"</MenuNav>
    <p @click="show">显示</p>
    import MenuNav from "@components/MenuNav/MenuNav.vue";
    export default {
        data(){
            return{
                title:"这是父组件得值"
            }
        },
        methods:{
            show(){
                this.$refs.MenuNav.show('id')
            }
        }
    
    }
    

    子组件和父组件通信

    • props-破软丝
    • $parent-佩润特
    • $emit 是手动触发当前实例上的一个指定事件。
    • $on 是用来在监听(注册)自定义事件的。
    // 父组件
    <MenuNav :parentHide="parentHide" @getParent3="getParent3"></MenuNav>
    import MenuNav from "@components/MenuNav/MenuNav.vue";
    export default {
        data(){
            return{
                title:""
            }
        },
        methods:{
            parentShow(){
                console.log('-----父组件的方法1')
            },
            parentHide(){
                console.log('------父组件的方法2')
            },
            getParent3(data){
                console.log("------这是父组件的方法3", data);
            }
        }
    
    }
    
    // 子组件
    <div>
      <p class="title"></p>
      <button @click="show"></button>
      <button @click="hide"></button>
      <button @click="getParent3">调用父组件的方法3</button>
    </div>
    export default {
      props: {
        parentHide: {
          type: Function,
          default: ()=>{},
        },
      },
      methods:{
          show(){
             this.$parent.parentShow()
          },
          hide(){
              this.parentHide()
          },
          getParent3() {
              this.$emit("getParent3", "这是子组件的值");
          },
      }
    };
    
    

    不相干的组件

    使用 vuex

    Vuex 使用

    第一步在 store 增加方法

    import Vue from "vue";
    import Vuex from "vuex";
    
    Vue.use(Vuex);
    
    export default new Vuex.Store({
      state: {
        name: "默认名字",
      },
      // 格的儿丝
      getters: {
        name: (state) => state.name,
      },
      // 莫特甚丝
      mutations: {
        setName(state, data) {
          state.name = data;
        },
      },
      actions: {
        changeName({ commit }, data) {
          commit("setName", data);
        },
      },
      modules: {},
    });
    

    第二步 在需要改变的地方监听

    import { mapGetters } from "vuex";
    // computed 是计算属性,只要有值改变就会触发
    computed: {
      ...mapGetters({
        name: "name",
      }),
    },
    

    第三步调用

    <button @click="changeStoreName">改变name</button>
    
    changeStoreName() {
      // dispatch-得丝败切
      this.$store.dispatch("changeName", "通过vue传");
    },
    

    vue-router 钩子函数(路由拦截)

    全局的钩子函数

    • (之前)beforeEach(to,from,next) 每次每一个路由改变的时候都得执行一遍。
    • (每次之后)afterEach(to,from,next) 每次页面加载之后

    单个的路由钩子函数

    • (之前)beforeEnter (to,from,next)设置单个路由钩子函数

    组件内的导航钩子

    • beforeRouteEnter (to,from,next) 进入这个组建路由之前
    • beforeRouteUpdate (to,from,next)离开这个组建路由
    • beforeRouteLeave (to,from,next) 再本路由的下级路由切换才会触发
    const Foo = {
      template: `...`,
      beforeRouteEnter (to, from, next) {
        // 在渲染该组件的对应路由被 confirm 前调用
        // 不!能!获取组件实例 `this`
        // 因为当钩子执行前,组件实例还没被创建
      },
      beforeRouteUpdate (to, from, next) {
        // 在当前路由改变,但是该组件被复用时调用
        // 举例来说,对于一个带有动态参数的路径 /foo/:id,在 /foo/1 和 /foo/2 之间跳转的时候,
        // 由于会渲染同样的 Foo 组件,因此组件实例会被复用。而这个钩子就会在这个情况下被调用。
        // 可以访问组件实例 `this`
      },
      beforeRouteLeave (to, from, next) {
        // 导航离开该组件的对应路由时调用
        // 可以访问组件实例 `this`
    
      }
    
  • 相关阅读:
    linux里source、sh、bash、./有什么区别
    grafna如何用新的dashbord覆盖旧的dashbord
    selenium.webdriver获取结果转为json格式
    利用Python读取和修改Excel文件(包括xls文件和xlsx文件)——基于xlrd、xlwt和openpyxl模块
    python多线程实现ping多个ip
    Kubernetes 从懵圈到熟练 – 集群网络详解(转)
    kubectl 自动补全
    跨域资源共享 CORS 详解
    serializers--嵌套关系作为字段来表示
    Vue结合后端DjangoFramework的在线生鲜超市(前后端分离)【django2.2+xadmin+ueditor】
  • 原文地址:https://www.cnblogs.com/sjie/p/14010691.html
Copyright © 2020-2023  润新知