Vue单向数据流 和 computed的getter&sette

2019-05-21  本文已影响0人  Grayly吖

一、单向数据流

(1)\color{red}{单向数据流}:指只能从一个方向修改数据,即父组件可以向子组件传递数据,但是子组件不能直接修改父组件的状态

(2)Vue是单向数据流,Vue的双向绑定是语法糖

(3)\color{red}{语法糖}:指在不影响功能的情况下,添加某种方法实现相同的效果,从而方便开发
(使用语法糖可以简化代码书写)

         <p :id="id">123</p>
        v-model的使用:
        <input v-model="form" />
        v-model的原理:
        <input v-bind:value="form" v-on:input="form = $event.target.value" />

(4)因为Vue是单向数据流,子组件想修改父组件的值,需要使用$emit通知父组件,让父组件进行修改

二、计算属性computed的\color{red}{getter}&\color{red}{setter}

1、getter&setter

      计算属性computed默认只有getter,不过在需要的时候你也可以提供一个setter,有了setter属性后,就可以通过setter自主地改变计算属性本身的值

2、computed的一般写法

(因为默认只有getter,是默认值,所以也常常忽略不写)

      data() {
        return {
          msg: 123
        };
      },
      computed: {
        newMsg() {
          return this.msg * 2;
        }
      }

3、computed的完整写法

      computed: {
        newMsg: {
          get() {
            return this.msg * 2;
          }
        }
      }

4、getter&setter的使用

    <template>
      <div id="demo">
        <h3>msg:{{msg}}</h3>
        <h3>newMsg: {{newMsg}}</h3>
        <p>
          输入框:
          <input type="text" v-model="newMsg">
        </p>
      </div>
    </template>

    <script>
    export default {
      data() {
        return {
          msg: "你好"
        };
      },
      computed: {
        newMsg: {
 
       getter:根据原有的属性计算出新的属性(获取数据)
          get() {
            return this.msg;
          },

       setter:当newMsg发生变化时(重新赋值),触发set方法,得到修改后的值通过value传入
          set(value) {
            this.msg = value;   当原有属性发生变化时,触发get方法,然后渲染到页面
          }
        }
      }
    };
    </script>
上一篇下一篇

猜你喜欢

热点阅读