Vue基础

19 年 8 月 19 日 星期一
676 字
4 分钟

Vue基础知识

Vue生命周期&Hook回调函数

beforeCreate、Created等是钩子回调的函数,通过这些函数,我们可以指定在Vue生命周期的某一阶段做一些事情。

回调函数示例

js
const app =new Vue({
 el:'#id',
 data:obj,
 methods:{...},
    //回调函数
 beforeCreate:function(){...},
    mounted:function(){...}
    ...
})
    //其中,data的obj对象为。data可以是对象。
    const obj={
     count:0,
     i:'haha'
 }

指令

  • v-once:执行一次后,内容不再随数据的变化再改变。
  • v-html:对内容进行html解析渲染
  • v-pre:不对内容进行任何解析
  • v-cloak:斗篷,vuejs生效前保留v-cloak,vuejs生效后删除所有v-cloak属性,可以用css控制v-cloak来达成我们的目的,比如当vuejs延迟加载的时候,不让用户看到未被vuejs渲染的源码内容。
  • v-text:如v-text="message",把message数据作为字符串显示,会覆盖掉原本的内容
  • v-one:如v-on
    ="message",监听某个事件

V-bind

动态的绑定特殊意义的属性,如a标签的href,img标签的src,还有class等,动态绑定数据。

简写为::,是语法糖。

静态实例

html
<div id="app">
  <h1>v-bind指令</h1>
  <a v-bind:href="aURL">blog</a>
  <img v-bind:src="imgURL" /><br />
  v-bind简写:<img :src="imgURL" />
</div>
<script>
  //url对象
  const url = {
    aURL: 'http://shirtiny.cn',
    imgURL:
      'https://file.moetu.org/images/2019/08/20/b46b2347f21fd46f60baf163a57da47c2b17554146847392.png',
  };

  const app = new Vue({
    el: '#app', //挂载
    data: url, //数据对象
  });
</script>

如绑定class、style的实例

对象:

html
<style>
  .red {
    color: red;
  }
  .line {
    text-decoration: underline;
  }
</style>

<div id="app">
  <!--<h1 class="class" v-bind:class="{key1:value,key2:value}">v-bind指令</h1>-->

  <p class="class" v-bind:class="{red:isRed,line:isLine}">v-bind指令</p>
  <br />
  <!-- 原class与v-bind:class可以共存,它们会在被渲染时合并(2+1=3)不会覆盖 -->
  <button v-on:click="changeRed">切换颜色</button>
  <button v-on:click="changeLine">下划线</button>

  <!--或者 -->
  <p v-bind:class="getClass()">v-bind指令</p>
  <br />
  <!-- style也一样的-->
  <p :style="{color:'red',fontSize:'50px'}">v-bind指令</p>
  <br />
</div>
<script>
  const app = new Vue({
    el: '#app', //挂载
    data: {
      //class状态
      isRed: true,
      isLine: false,
    },
    methods: {
      changeRed: function () {
        this.isRed = !this.isRed; //在true和false之间切换
      },
      changeLine: function () {
        this.isLine = !this.isLine;
      },
      getClass: function () {
        return { red: this.isRed, line: this.isLine };
      },
    },
  });
</script>
  • 对象用{}括起来,是key:value的形式,{key1
    ,key2
    }
  • 原class与v-bind
    可以共存,它们会在被渲染时合并(2+1=3)不会覆盖

数组:

html
<div id="app">
  <p v-bind:class="[isRed,isLine]">v-bind指令</p>
  <br />
  <!--或-->
  <p v-bind:class="getClass()">v-bind指令</p>
  <br />

  <!-- style也一样,数组里放对象,或放键值对都行-->
  <p :style="[hahaColor,hahaLine]">v-bind指令</p>
  <br />
</div>
<script>
  const app = new Vue({
    el: '#app', //挂载
    data: {
      //class状态
      isRed: 'red',
      isLine: 'line',
      hahaColor: { color: 'red', fontSize: '50px' }, //对象
      hahaLine: { 'text-decoration': 'underline' }, //对象
    },
    methods: {
      getClass: function () {
        return [this.isRed, this.isLine];
      },
    },
  });
</script>

计算属性computed

  • 实际上代表了一个函数的值
html
<!--计算属性-->
<div id="app">{{laopo}}</div>

<script>
  const app = new Vue({
    el: '#app',
    data: {
      haha: '许愿贞德',
      dd: '贞环转',
    },
    computed: {
      laopo: function () {
        return this.haha + this.dd;
      },
    },
  });
</script>

文章标题:Vue基础

文章作者:shirtiny

文章链接:https://kizamu.anror.com/posts/vue-2[复制]

最后修改时间:


商业转载请联系站长获得授权,非商业转载请注明本文出处及文章链接,您可以自由地在任何媒体以任何形式复制和分发作品,也可以修改和创作,但是分发衍生作品时必须采用相同的许可协议。
本文采用CC BY-NC-SA 4.0进行许可。