20200430 Vue组件--单向数据流--props 的两种应用场景

单向数据流中props的两种应用场景

  • 单向数据流:通过 props 传递数据是单向的,也就是父组件数据变化时会传递给子组件,但是反过来不行
  • 单向数据流的目的:是尽可能的将父子组件解耦,避子组件无意中修改了父组件的状态。
  • 单向数据流的应用场景:业务中会经常遇到两种需要改变 prop 的情况

第一种:

父组件传递初始值进来,子组件将它作为初始值保存起来,在自己的作用域下可以随意使用和修改。这种情况可以在组件 data 内再声明一个数据,引用父组件的 prop。
步骤一:注册一个组件
步骤二:将父组件的数据传递进来,并在子组件中使用 props 接收
步骤三:将传递进来的数据通过初始值保存起来。

        Vue.component('my-component', {
            props: ['msg'],
            template: '<div>{{count}}</div>',
            data() {
                return {
                    count: this.msg //步骤三:将传递进来的数据通过初始值保存起来。
                }
            }
        })

第二种:

prop 作为需要被转变的原始值传入,这种情况使用计算属性就可以了
步骤一:注册组件
步骤二:将父组件的数据传递进来,并在子组件中用 props 接收
步骤三:将传递进来的数据通过计算属性进行重新计算

//在input中输入数字,改变div的高度为相应的大小
        <input type="text" v-model="height">
        <width-component :height="height"></width-component>


        Vue.component('width-component', {
            props: ['height'],
            template: '<div :style="style"></div>',
            data() {
                return {
                }
            },
            computed: { 
                style() {
                    return {
                        height: this.height + 'px',
                        background: 'red',
                        width: '30px'
                    }
                }
            }
        })
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。