美文网首页
Vue单向数据流 和 computed的getter&sette

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

作者: Grayly吖 | 来源:发表于2019-05-21 20:25 被阅读0次

一、单向数据流

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

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

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

  • 例如:v-bind绑定属性简写就是一个冒号
         <p :id="id">123</p>
  • \color{red}{v-model}在使用的时候很像双向绑定的,但是 Vue 是单项数据流,v-model 只是语法糖而已
        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的使用

  • 其执行顺序是setter -> getter
    <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>

相关文章

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

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

  • Vue 中的双向数据绑定

    双向绑定 单向数据流 双向绑定 or 单向数据流 Vue 是单向数据流,不是双向绑定 Vue 的双向绑定是语法糖 ...

  • vuex简单讲解

    vue 理解vuex我们先来认识下vue Vue是单向数据流,v-model只是语法糖而已。单向数据流就是:数据总...

  • VUE面试题补充

    上一篇链接:vue的一些基础知识(涉及面试题) 1.解释单向数据流和双向数据绑定 单向数据流: 顾名思义,数据流是...

  • v-model与store的使用

    有时候,需要使用单向数据流绑定store的state的业务场景,我们可以结合computed属性使用,绕开data属性

  • React 面试题整理

    一、react 和 vue 的区别是什么? 1、vue是响应式的数据双向绑定系统,而react是单向数据流,没有双...

  • 常见vue面试题

    1. 解释单向数据流和双向数据绑定单向数据流: 数据流是单向的。数据流动方向可以跟踪,流动单一,追查问题的时候可以...

  • 复习4

    组件通讯之slot 组件通讯是单向的数据流: 计算属性:主要通过computed关键字实现 通过逻辑计算,得到的一...

  • 通过 v-model 实现父子组件的双向数据绑定

    单向数据流单向数据流是Vue组件一个非常明显的特征,不应该在子组件中直接修改props的值 如果传递的props仅...

  • Vue 几个要点(一)

    Vue是单向数据流,不是双向绑定 Vue的双向绑定不过是语法糖 Object.defineProperty是用来做...

网友评论

      本文标题:Vue单向数据流 和 computed的getter&sette

      本文链接:https://www.haomeiwen.com/subject/ykzjzqtx.html