响应式框架真的非常好,了解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方法,然后找到订阅者更新数据到页面。
既然我们知道的原理,那么我们如何想进行二次封装的超集,该如何呢?