
获得徽章 6
- Q: [高频面试题] React Hooks 为什么会被引入, 其想要解决什么问题
A:
React Hook 在 16.8 版本被引入, 它可以让你在不使用 class 的情况下使用 state 和其他 React 特性
1. 组件之间难以复用状态逻辑. 此前解决该问题的方法是 render props 个 高阶组件. 这类方式都需要重新的去组织组件结构, 如果你用 React DevTools 看一下应用, 你会发现有很多 provider, consumer, render props 和 高阶组件, 形成了嵌套地域. React Hooks 可以让你在不改变组件结构的情况下复用状态逻辑.
2. 复杂组件变得难以理解. 你可能会在 componentDidMount 和 componentDidUpdate 中发起请求来获取数据. 你可能会在 componentDidMount 中绑定事件, 然后在 componentWillUnmount 取消事件监听. 看到了吗? 绑定事件和取消绑定事件这对本来需要同步去做的事情, 被拆分到了不同的函数中, 并且绑定事件和发起请求这两个不相关的行为被放到了同一个函数里面. React Hooks 将组件中相互关联的部分拆分成更小的函数, 而非按照生命周期进行拆分.
3. class 难以理解, 你必须去理解 this 在 JavaScript 中的运作方式, 这与其他语言有着巨大差异. 没有稳定的语法提案, 这些代码非常冗余. React Hooks 使你在不使用 class 的情况下可以使用更多的 React 特性.
Note: 其实第三点我感触不深, 我对于其他语言没有太多的了解. 至于说稳定的语法提案, 有了 babel, 对于平时的使用也不会有太大的影响.展开317 - 用require.context获取文件夹下所有jpg文件,并放到list中。
```
const files = require.context('@/assets/images/bg', false, /.jpg$/)
files.keys().forEach(key => {
this.list = files.keys().map((item) => files(item).default || files(item))
})
```
files(item).default 获取的是Es6规范暴露的内容(如:export default)
files(item) 获取的是CommonJs规范暴露的内容(如:module.exports)展开65 - 120
- 【需要正能量】很早就想要做副业,开了个头,做了几年前端开发,经常感觉疲倦,尤其是加班很晚的时候。成都IT圈工资普遍不高(三年多,我现在现薪资一万出头),不想某天失业了,没有其他收入来源。
副业选择有很多,看自己怎么选择。没有选择卖煎饼,可能是觉得周围喜欢吃这个的,需求不大吧(其实是我没有资源)。
选择开奶茶店,没有选择网红品牌,而是选择这个健康理念的张阿姨奶茶,我也不去黑哪些品牌是用的奶精制作奶茶。这个品牌是全国认证的第一个全系无奶精奶茶,纯牛奶制作(奶精危害自行百度,有一点我提一下,奶精热量高,喝了更容易长胖),孕妇小孩老人男生女生夜猫子都可以喝,品牌来自杭州,成都目前有十几家,为了健康,选择了它,作为程序猿,本来就更需要爱惜自己的身体,觉得“健康”也是未来大家会更关注的话题吧。
成都奶茶竞争很大,如果你在成都或者有一天来成都旅游或者你在其他城市,看到张阿姨奶茶,记得支持一下。有我名字的,现在有一家,接下来还有第二家,第三家……希望发展越来越好!说不定有一天副业创业收入超过正业了,我就辞职了。
以后会分享一些副业创业的经历,希望能帮助到那些想有副业或者小成本实体店创业的掘友!展开193 - 我是开源库 better-scroll 的作者 -- 黄轶,你有什么问题要问我?
大家好,我是黄轶,目前就职于 Zoom 公司担任前端架构师,曾就职于滴滴和百度,毕业于北京科技大学。我是开源库 better-scroll 的作者,也是慕课网的老师,相信有很多同学通过我的课程学习掌握了 Vue.js 这门技术。
我在 2012 年毕业加入百度后,才开始正式接触 Web 前端,上学期间主要接触的是 .net,写过几个小作品到 CSDN,我非常庆幸转行,如果毕业还坚持做 .net 可能早就凉了。在百度的 3 年工作经历,我写过页面,写过网页游戏、写过chrome插件、写过组件、写过框架。
15 年 7 月份我加入滴滴,成为当时公共部门第一个前端。在滴滴的 3 年,我造过很多公司级别轮子(登录 sdk、jsbridge-sdk,地图 sdk 等),作为技术负责人主导过 2 次滴滴 WebApp 重构,负责架构设计和实现。在 16 年初把 Vue.js 引入滴滴的生产环境项目中,并在 WebApp 5.0 的重构项目得到全面应用。在滴滴的后期我负责 WebApp 架构组,开源了 cube-ui,折腾了多个技术方向(自动化测试框架、小程序框架)。
18 年 9 月,为追求喜欢的生活方式,我离开生活 12 年的帝都,回到家乡合肥,加入了目前的公司 Zoom。结合 Zoom Web 产品的特点我设计了一整套前后端分离的架构设计方案,包括了项目初始化、本地开发、联调、测试、上线等各个环节,并在多个项目中落地。同时,我们基于 element-ui fork 出 zoom-ui,并致力解决和优化 aceesibility 问题,另外除了基础组件之外我们针对一些业务场景设计了业务组件。
我在工作外也不忘发挥余热,从做兼职,到写书,做课程。它们不仅带来额外收入,也促进了我能力的提升,比如 Angular.js 的学习就是兼职中边做边学的;通过写书和做课程,我把 Vue.js 的源码翻烂了。我的理念是挣外快可以,但同时一定要提升自己,否则就是浪费时间。由于篇幅原因,完整介绍见图2
我在 2019.06.18 - 2019.06.20 期间挑选有趣、有典型性、有意义的问题回答,你们可以问我 「前端开发」、「Vue.js」、「源码」、「前端架构」、「性能优化」、「个人成长」等相关问题。展开366337