前段时间在 GitHub 上看到一个 Vue 异步计算属性的库 - vue-async-computed, 将异步操作转化为计算属性, 例如这样用
1 | new Vue({ |
好奇其中原理, 看了源码, 了解其中巧妙的实现思路, 绘制了一张核心思路的原型图.
接下来我们实现一个简(阉)易(割)版本的 vue-async-computed
插件,
趁着 beforeCreate
往 data
中添加 asyncComputed
的 key
, 使之响应式.
前段时间在 GitHub 上看到一个 Vue 异步计算属性的库 - vue-async-computed, 将异步操作转化为计算属性, 例如这样用
1 | new Vue({ |
好奇其中原理, 看了源码, 了解其中巧妙的实现思路, 绘制了一张核心思路的原型图.
接下来我们实现一个简(阉)易(割)版本的 vue-async-computed
插件,
趁着 beforeCreate
往 data
中添加 asyncComputed
的 key
, 使之响应式.
最近自己的一个项目使用了 RxJS 进行状态管理, 需要在组件中订阅流来获取全局状态, 但是在组件卸载的时候需要手动取消订阅流.
这样写起来有点繁琐,所以考虑用装饰器简化下代码
1 | import * as React from "react"; |
多年来,我注意到自己在处理组件 api 和构建应用程序和库方面有一系列模式。以下是一系列如何设计组件 api 的想法、观点和建议,这会让组件更灵活、更具有组合性、更容易理解。这些规则都不是硬性的,但它们帮助我想明白了如何组织和创建组件。
正如 React 库本身的目标是 最少化 API 一样,我建议在设计组件 API 时采用类似的观点。需要学习的新内容越少,其他人就越容易知道如何使用你创建的组件,从而使它们更可容易被重用。如果有人不理解你的组件 API,那么他们重复你的工作的可能性就会增加。这是我如何创建组件的核心理念,我发现在我工作中牢记它很有帮助。
一直觉得装饰器的写法有种蜜汁好感和好奇,例如 @component
或者@connect(x, y)
。
装饰器在 React 和 Angular 中很常见,因为这两个框架很强调类,而装饰器的作用范围正是类和类成员,来看装饰器提案的一句话
Decorators make it possible to annotate and modify classes and properties at design time.
指出了装饰器作用对象,注意到最后三个单词 at design time
, 再抄袭一句话
装饰器对类的行为的改变,是代码编译时发生的,而不是在运行时。这意味着,装饰器能在编译阶段运行代码。也就是说,装饰器本质就是编译时执行的函数
Update your browser to view this website correctly. Update my browser now