致那些复杂的响应式框架1

2019-05-08  本文已影响0人  wangyongyue

响应式框架真的非常好,了解RX系列总感觉太复杂了,学习曲线有点长。
第一次看我就很懵逼,什么啊不懂啊,干嘛啊那么多套路,简单点好不好啊
好蓝瘦。
对于一个原生框架大家的思路都是深入底层,扩展他的能力,不影响原有API和项目,减少侵入性。
但是我想能不能做他的超集,TS对于js,使他变的更好,能力也更强,
兼容老版本不会影响现在的代码,超集想用就用。
首先看看响应式原理:

 let label = UILabel()
    var _orderName:String?
    var orderName:String?{
        set{
            print("set")
            
            _orderName = newValue
            response()
        }
        get{
            print("get")
            return _orderName
        }
    }
    
    func response(){
        label.text = orderName
    }
    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.
        self.view.backgroundColor = UIColor.white

        
        label.backgroundColor = UIColor.blue
        label.textColor = UIColor.red
        label.frame = CGRect.init(x: 50, y: 80, width: 80, height: 30)
        self.view.addSubview(label)

        let button = UIButton()
        button.setTitle("button", for: .normal)
        button.setTitleColor(UIColor.black, for: .normal)
        button.addTarget(self, action: #selector(addText), for: .touchUpInside)
        self.view.addSubview(button)
        button.frame = CGRect.init(x: 50, y: 180, width: 80, height: 30)

    }
    @objc func addText(){
        
        self.orderName = "wyy"
    }

超级简单,本质原理就是这样,无论是RXSwift的Runtime消息转发,KVO,Vue的Object.defineProperty,通知队列。本质就是数据变化出发setter方法,然后找到订阅者更新数据到页面。
既然我们知道的原理,那么我们如何想进行二次封装的超集,该如何呢?

上一篇 下一篇

猜你喜欢

热点阅读