您当前的位置: 首页 > 

知其黑、受其白

暂无认证

  • 3浏览

    0关注

    1250博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

28 Vue组件中的单项数据流机制

知其黑、受其白 发布时间:2021-12-03 16:15:47 ,浏览量:3

[组件]Vue组件中的单项数据流机制
  • 阐述
  • 编写一个计数器
  • 单向数据流概念
  • 为什么要有单向数据流机制

阐述

这节我们继续讲组件传递参数时的单项数据流。

它是Vue编写组件的一个重要机制,保证了组件的独立性。 作为一个程序员,我们有必要知道、了解和精通单项数据流的概念和使用。

编写一个计数器

为了更好的说明什么是单项数据流,在文章开始前,我们需要用以前学的知识,编写一个计数器功能。

DOCTYPE html>


    
    
    Demo
    


    


    const app = Vue.createApp({
        data() {
            return {

            }
        },
        template: `
            willem.com
        `
    })

    const vm = app.mount("#app")


在这里插入图片描述 然后编写一个全局组件,全局组件接受一个参数 counter,代码如下。

app.component('Counter', {
    props: ['counter'],
    template: `
        {{counter}}增加数量
    `
})

编写好全局组件 Counter 后,就可以在父组件中使用了,因为 Counter 是传递到子组件里的,所以要在数据项 data 中进行声明。

const app = Vue.createApp({
    data() {
        return {
            counter: 0
        }
    },
    template: `
        willem.com
        
    `
})

一切好像都很正常,但是当你在浏览器中预览的时候,你会发现点击按钮根本不起作用。这就是单向数据流机制限制的结果。

在这里插入图片描述

单向数据流概念

什么是单向数据流? 官方的解释还是比较晦涩难懂的。

所有的 prop 都使得其父子 prop 之间形成了一个单向下行绑定: 父级 prop 的更新会向下流动到子组件中,但是反过来则不行。

我第一次读这段文字时,也没有搞清楚它要说的到底是什么,但是经过学习和项目后,其实单项数据流的概念就特别好理解。

可以简单的说:数据从父级组件传递给子组件,只能单向绑定。子组件内部不能直接修改从父组件传递过来的数据。

这也就是为什么,我们上面写的程序不能使用的原因了。

那如何修改这个程序,让其好用呢,方法很简单,在组件内的数据项中声明一个变量,把父组件传递过来的变量赋值给内部变量,然后就可以随意修改了。

app.component('Counter', {
    props: ['counter'],
    data() {
        return {
            newCounter: this.counter
        }
    },
    template: `
        {{newCounter}}增加数量
    `
})

这样就可以进行修改了。 当我们通过程序,更好的理解了什么是单项数据流后,我们再来总结一下。 单向数据流就是父组件可以向子组件传递数据,但是子组件不能修改数据。

DOCTYPE html>


    
    
    Demo
    


    


    const app = Vue.createApp({
        data() {
            return {
                counst: 0
            }
        },
        template: `
            willem.com
            
        `
    })

    app.component('Counter', {
        props: ['counst'],
        data() {
            return {
                newCounter: this.counst
            }
        },
        template: `
            {{newCounter}} 增加数量
        `
    })

    const vm = app.mount("#app")


为什么要有单向数据流机制

单项数据流的最终目的,就是为了降低组件的耦合度和独立性。

比如现在页面上同时调用了三个组件,没有单项数据流的机制,很容易变成一个组件数值变化,其他组件的数值也跟着变化的现象。

让页面组件的数据耦合在一起,没办法独立使用。

template: `
    willem.com
    
    
    
`

而本文主要学习的目的就是搞清楚什么是组件中的单项数据流的概念。

关注
打赏
1665558895
查看更多评论
立即登录/注册

微信扫码登录

0.1631s