学习路线
所谓依赖就是Wather,视图中谁用到了这个响应式数据就更新谁,换句话说:
我们把“谁用到了这个响应式数据”称为“谁依赖了这个响应式数据”,我们给每个数据都建一个依赖数组(因为一个数据可能被多处使用),谁依赖了这个数据(即谁用到了这个数据)我们就把谁放入这个依赖数组中,那么当这个数据发生变化的时候,我们就去它对应的依赖数组中,把每个依赖都通知一遍,告诉他们:"你们依赖的数据变啦,你们该更新啦!"。这个过程就是依赖收集。
1、何时收集依赖?何时通知依赖更新?
在可观测的数据获取时会触发getter属性,那么我们就可以在getter收集这个依赖,同样,当这个数据发生变化时会触发setter属性,那么我们就可以在setter中通知依赖更新视图等操作。
在getter中收集依赖,在setter中通知依赖更新。先收集依赖,即把用到该数据的地方收集起来,然后等属性发生变化时,把之前收集好的依赖循环触发一遍就行了。
2、把依赖收集到哪里?
在前面我们说到会给每个数据都建一个依赖数组,谁依赖了这个数据我们就把谁放入这个依赖数组中。单单用一个数组来存放依赖的话,功能好像有点欠缺并且代码过于耦合。我们应该将依赖数组的功能扩展一下,更好的做法是我们应该为每一个数据都建立一个依赖管理器,把这个数据所有的依赖都管理起来。即下面代码中的依赖管理器Dep类
export default class Dep {
constructor () {
// 依赖数组
this.subs = []
}
// 添加一个依赖
addSub (sub) {
this.subs.push(sub)
}
// 删除一个依赖
removeSub (sub) {
const subs = this.subs
if (subs.length) {
const index = subs.findIndex(el => el === sub)
if (index > -1) {
subs.splice(index, 1)
}
}
}
// 通知所有依赖更新
notify () {
const subs = this.subs
for (let i = 0; i < subs.length; i++) {
subs[i].update()
}
}
}
🎉 🎉 庆祝 📝 📝 笔记 ✨ ✨ 灿烂 🔥 🔥 火焰 🚀 🚀 火箭 💪 💪 强壮 👌 👌 好的 👏 👏 鼓掌 👍 👍 点赞 ⚠️ ⚠️ 警告 ❌ ❌ 叉号 ✔️ ✔️ 对勾
❤️ ❤️ 红心 ⭐ ⭐ 星星 🌈 🌈 彩虹 ☀️ ☀️ 太阳 ☁️ ☁️ 云 ❄️ ❄️ 雪花 ☔ ☔ 雨伞 😄 😄 微笑 😆 😆 大笑 😀 😀 咧嘴笑 😉 😉 眨眼
😅 😅 尴尬笑 🤔 🤔 思考 😋 😋 好吃 💰 💰 钱袋 🎁 🎁 礼物 💔 💔 破碎的心 💤 💤 打呼噜 👻 👻 幽灵 💣 💣 炸弹 💀 💀 骷髅头
😍 😍 心形眼睛 😎 😎 墨镜 😢 😢 哭泣 😱 😱 尖叫 👊 👊 拳头 🎵 🎵 音符 🍕 🍕 比萨饼 🍺 🍺 啤酒 🍰 🍰 蛋糕 🎆 🎆 烟花
💋 💋 热吻 ✌️ ✌️ 胜利手势 💦 💦 汗滴 💥 💥 爆炸 🌟 🌟 闪亮星星 🌹 🌹 玫瑰花 ☕ ☕ 咖啡 🍹 🍹 热带饮料 🍩 🍩 甜甜圈 🐶 🐶 狗
🐱 🐱 猫 ☀️ ☀️ 太阳 🌔 🌔 月亮 ⛅ ⛅ 部分晴天 ☁️ ☁️ 云 ⛄ ⛄ 雪人 ☔ ☔ 雨伞 ⚡ ⚡ 闪电 🌍 🌍 地球 ⚓ ⚓ 锚
🔥 🔥 火焰 ❤️ ❤️ 红心 ⭐ ⭐ 星星 😅 😅 汗笑 :face_with_raised_eyebrow: :face_with_raised_eyebrow: 抬眉 :winking_face: :winking_face: 眨眼 :thinking_face: :thinking_face: 思考 🤕 🤕 头部绷带 ☠️ ☠️ 骷髅头和骨头 🔮 🔮 水晶球
😂 😂 大笑 😻 😻 爱心猫咪 :dancing_banana: :dancing_banana: 跳舞香蕉人 🎆 🎆 烟花 😿 😿 哭泣的猫脸 :party_parrot: :party_parrot: 聚会鹦鹉 🐼 🐼 熊猫脸 🦄 🦄 独角兽 :pizza-parrot: :pizza-parrot: 披萨鹦鹉
学习路线思维导图
导入processon等上的思维导图
学习路线
文档学习资源文档学习资源文档学习资源文档学习资源文档学习资源文档学习资源文档学习资源文档学习资源文档学习资源文档学习资源文档学习资源文档学习资源文档学习资源文档学习资源文档学习资源文档学习资源文档学习资源文档学习资源文档学习资源文档学习资源文档学习资源文档学习资源文档学习资源文档学习资源文档学习资源文档学习资源文档学习资源文档学习资源文档学习资源文档学习资源文档学习资源文档学习资源文档学习资源文档学习资源文档学习资源文档学习资源文档学习资源文档学习资源文档学习资源文档学习资源文档学习资源文档学习资源文档学习资源文档学习资源文档学习资源文档学习资源文档学习资源文档学习资源文档学习资源文档学习资源文档学习资源文档学习资源文档学习资源文档学习资源文档学习资源文档学习资源文档学习资源文档学习资源文档学习资源
学习路线
视频学习资源视频学习资源视频学习资源视频学习资源视频学习资源视频学习资源视频学习资源视频学习资源视频学习资源视频学习资源视频学习资源视频学习资源视频学习资源视频学习资源视频学习资源视频学习资源视频学习资源视频学习资源视频学习资源视频学习资源视频学习资源视频学习资源视频学习资源视频学习资源视频学习资源视频学习资源视频学习资源视频学习资源视频学习资源视频学习资源视频学习资源视频学习资源视频学习资源视频学习资源视频学习资源视频学习资源视频学习资源视频学习资源视频学习资源视频学习资源视频学习资源视频学习资源视频学习资源视频学习资源视频学习资源视频学习资源视频学习资源视频学习资源视频学习资源视频学习资源
前端知识库