• vue学习


    1.一个组件就相当于一个区域

     2.向子组件传值可以通过v-bind:

      父组件向子组件传值:v-bind

      ex:

      <todo-item  v-for="item in list" :content="item"></todo-item>//循环list并将值赋值给item 通过v-bind:传值给子组件todo-item

      Vue.component("TodoItem",{//全局组件
        props:['content'],//从父组件要接受的值
        template:'<li>{{content}}</li>'
      })

      子组件向父组件传值:$emit

      <ul>

        <todo-item  v-for="(item,index) in list" :content="item" @delete="handleItemDelete" :index=index></todo-item>
      </ul>

      var TodoItem={//局部组件
        props:['content','index'],
        template:'<li @click="handleItemClick">{{content}}</li>',
        methods:{
          handleItemClick:function(){
            this.$emit('delete',this.index);
          }
        }
      }
      var vm=new Vue({
        el:"#app",
        components:{//将局部组件注册到全局里
          TodoItem:TodoItem
        },
        data:{
          list:[],
          inputVal:'',
          content:'hello'
        },
        methods:{
          handleBtnClick:function(){
            this.list.push(this.inputVal)
            this.inputVal=""
          },
          handleItemDelete:function(index){
            this.list.splice(index,1)
          }
        }
      });

    3.使用局部组件时需要将局部组件注册到跟实例中

    4.以$开头的东西都是vue的实例属性或实例方法

    5.生命周期函数:

    //生命周期函数:vue实例在某一个时间点自动执行的函数(不放在methods 直接放在实例中
    beforeCreate: function () {//在实例部分(事件/生命周期)初始化完成之后调用
      console.log('beforeCreate')
    },
    created: function (){//完成外部的注入/双向绑定等的初始化后调用
      console.log('created')
    },
    beforeMount: function (){//模板和数据相结合,即将挂载到页面上的一瞬间渲染到页面上之前执行
      console.log(this.$el)
      console.log("beforeMount")
    },
    mounted:function(){//元素挂载到页面之后 自动执行此函数
      console.log(this.$el)
      console.log('mounted')
    },
    beforeDestroy:function(){//实例销毁之前执行
      console.log('beforeDestroy')
    },
    destroyed:function(){//实例销毁之后自还行
      console.log('destroyed')
    },
    beforeUpdate:function(){//数据发生改变前 没有重新渲染到页面 执行此函数
      console.log("beforeUpdate")
    },
    updated:function(){//数据渲染完成之后执行
      console.log('updated')
    }

     6.v-指令写的是js表达式

      v-指令后面除了可以写js还可以加字符串 插值表达式也可以加字符串

      <div id="app">

        <div v-text="content +' world'" :title="content"></div>
        <div v-html="inner"></div>
        {{inner}}
        <div v-text="inner"></div>
        <div v-html="content"></div>
      </div>
      var vm=new Vue({//全局
        el:"#app",
        data:{
          content:'hello',
          inner:'<span>content</span>'
        }
      });

    7.computed:{//计算属性 有缓存 如果依赖的值没有变化则会使用缓存}

    8.如果一个功能既可以用methods 又可以使用watch  还可以使用computed 建议使用computed

    9.使用组件的细节点:

    ①使用is解决bug

    <table>
      <tbody>
        <tr is="row"></tr>
      </tbody>
    </table>

    Vue.component('row',{
      template:"<tr><td>hello</td></tr>"
    })

    10.vue是单向数据流  父组件可以向子组件传值  但是子组件不可以修改父组件参数,子组件可以通过克隆的方式修改

    11.<child :content="world"></child>

    此处content加冒号会报错是因为world没有在父组件里边定义,加上:相当与后边的是js表达式,在父组件找不到就会报错

    去掉:就相当于字符串,和父组件没有关系或者非要加:可以写为:content="'world'"

    :count="0"是强制将字符串转换为数字 如果0不见""代表为字符串

    12.<child :content="'hello world'" @click.native="handleClick"></child> <!--给组件绑定原生事件--> 

    13.循环

     循环数组:

      <li v-for="item of list" :key="item.id">

        <div>{{item.name}}</div>

      </li>

      循环对象(此处举例针对城市列表)

      <li v-for="(item, key) of list" :key="key">

        <div>{{key}}</div>

        <div v-for="innerItem of item" :key="innerItem.id">

          <div>{{innerItem.name}}</div>

        </div>

      </li>

  • 相关阅读:
    递归---Day29
    File类---Day28
    线程池---Day26
    微信公众号运营人员必备的软件工具网站合集
    消息中间件的技术选型心得-RabbitMQ、ActiveMQ和ZeroMQ
    itoa函数的递归实现(二级指针实现)
    二叉树——查找两个任意节点的最近祖先
    C#多线程(二)
    C#多线程(一)
    Websocket协议之php实现
  • 原文地址:https://www.cnblogs.com/lyt598/p/10824858.html
Copyright © 2020-2023  润新知