使用HOC完成就好,在render中合并defaultStyle与this.props.style两个对象
大
大肥凯
@大肥凯
960
得分
3
声望
30
帖子
188
资料浏览
0
粉丝
0
关注
大肥凯 发布的帖子
-
RE: #14 React.js 加载、刷新数据 - 高阶组件
@chwech 高阶组件的原则,就是给原有的组件新增一些功能,但不能干扰到原有组件自带的属性、行为。所以高阶组件render时,需要使用{...this.props},这样子将props原封不动传到原有组件中。
-
RE: #17 React-redux 实现用户列表的显示、增加、删除
考察Redux的:
- 定义
- 与react的结合
也考察了React组件的基本写法与form的一些理念。好题目。
-
RE: #38 可以开车了吗?
好题目,借鉴了评论区各位大神的思路:
/** * 方法1: * 每个异步任务执行结束后,判断一下是否所有任务都结束了 */ var driveCustomers = (...fns) => { let names = [] for (const fn of fns) { fn((name) => { names.push(name) // 执行本任务 if (names.length === fns.length) { // 判断是否所有任务都结束了 drive(names) } }) } } /** * 方法2:利用Promise + async/await来控制异步(并发)流程 * 每一个人相当于一个异步任务,最后开车的步骤需要在每个异步任务都完成了之后才进行,所以这其实是一种异步流程控制。 * 所以方法1是不合理的,因为“是否要开车”这个任务,是独立于任何一个异步任务之外的,按理来说不应该由每一个都进行判断。 * 故要借助Promise.all来对单个任务、全局任务解耦。 */ var driveCustomers = async (...fns) => { let names = [] // 保存结果,对于每个异步任务来说是"全局"变量 let promises = fns.map(fn => { return new Promise((resolve, reject) => { fn((name) => { names.push(name) resolve() }) }) }) await Promise.all(promises) drive(names) }
-
RE: #85 优先队列
可以维护一个有序数组。每次add的时候使用二分查找,remove的时候就pop()。复杂度为logN,比每次都找max的复杂度(N)要低。