问:vue如何检测数组变化?
七娃博客
629人阅读
数组考虑性能原因没有用defineProperty对数组每一项进行拦截,而是选择重写数组(push、shift、pop、splice,unshift、sort、reverse)方法进行重写。
let state = [1,2,3] let originalArray = Array.prototype; let arrayMethods = Object.create(originalArray); function defineReactive(obj){ arrayMethods.push=function(...args){ originalArray.push.call(this, ...args) render() } obj.__proto__ = arrayMethods; } defineReactive(state); let render = (fn)=>{ app.innerHTML = state; } render() state.push(4)
主题开源不易,支持一下作者吧!
使用支付宝打赏
使用微信打赏
评论 | 0 条评论
登录之后才可留言,前往登录