美文网首页前端大杂烩
Vue依赖注入学习

Vue依赖注入学习

作者: 写写而已 | 来源:发表于2020-04-23 17:05 被阅读0次

    父组件使用provide方法,返回要注入的data数据或方法

    provide() {
        return {
            // 各个子组件,孙子组件依赖的关系,可以是方法,也可以是data数据
            scrollTop: this.scrollTop,
            back: this.back
        }
    }
    
    // 父组件
    export default {
        components: { types, access, exportation, complete },
        name: '/task/checkin',
        // data:任务详情
        props: {
            data: { type: Object, default: {} }
        },
        mixins: [Mixins],
        data() {
            return {
                // 步骤条
                active: 1,
                // 接入源输出源表单控制
                form: {
                }
            }
        },
            // 关键部分
        provide() {
            return {
                scrollTop: this.scrollTop,
                back: this.back
            }
        },
        methods: {
            // 完成创建,清空form
            back() {
            },
            next(val) {
                this.active = val
            },
            // 页面向上滚动
            scrollTop(val = 160) {
                this.$refs.checkin.scrollTop = val
            }
        },
        created() {
        }
    }
    

    子组件或者孙子组件等,使用inject来接收

    export default {
        props: ['active', 'data', 'loading'],
        inject: ['scrollTop', 'back', 'checkActive', 'form'],
        name: 'checkin-complete',
        mixins: [Mixins],
        components: { checkinMap },
        data() {
            return {
                activeNames: ['1', '2']
            }
        },
        methods: {
            next(val) {
                // Object类型,是老的原始数据,不是最新的ajax赋值的数据
                console.log(this.form)
                // 在注入的子页面,修改属性值是可以改变所有引入的,但是在父组件修改数据,子组件并不会被更新,还是需要用bind绑定
                this.form.jobName = 1238912
                // 直接执行
                this.scrollTop()
                // 单一数据checkActive:1,也不是最新的数据,通过其他方式改表也不会被改变
                this.checkActive = 2
                // 重新赋值也是只对当前模块有效
                console.log(this.checkActive)
                this.$emit('update:active', val)
            }
        }
    }
    

    相关文章

      网友评论

        本文标题:Vue依赖注入学习

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