zoukankan      html  css  js  c++  java
  • vue3中手写shallowReactive, shallowRef(系列十三)

    function shallowRef(val) {
        return shallowReactive({value:val});
    }
    
    function shallowReactive(obj) {
        return new Proxy(obj, {
            get(obj, key){
                return obj[key];
            },
            set(obj, key, val){
                obj[key] = val;
                console.log('更新UI界面');
                return true;
            }
        })
    }
    let obj = {
        a:'a',
        gf:{
            b:'b',
            f:{
                c:'c',
                s:{
                    d:'d'
                }
            }
        }
    };
    /*
    let state = shallowReactive(obj);
    
    //只有最外层的a属性变化,才会触发视图更新
    // state.a = '1';
    state.gf.b = '2';
    state.gf.f.c = '3';
    state.gf.f.s.d = '4';
     */
    let state = shallowRef(obj);
    
    // state.value.a = '1';
    // state.value.gf.b = '2';
    // state.value.gf.f.c = '3';
    // state.value.gf.f.s.d = '4';
    // ref的最外层属性value,只有它改变,视图才会跟新
    state.value = {
        a:1,
        gf:{
            b:2,
            f:{
                c:3,
                s:{
                    d:4
                }
            }
        }
    }
  • 相关阅读:
    语言只是个工具
    最近学到的一点东西
    iBeacon开发
    马上着手开发Mac应用程序
    Text Kit入门
    Text Kit进阶
    Web Notification
    Objective-C异步编程
    Clang Language Extensions
    黑客与画家
  • 原文地址:https://www.cnblogs.com/fsg6/p/14487304.html
Copyright © 2011-2022 走看看