Genzhen

Results 68 comments of Genzhen

> @Genzhen 写的明显有问题还那么多人点赞,笑死 @cool-518 是基于ES6 Generator实现这个?输出是没有问题的 ```js function* fib(n) { if (n < 0) throw new Error("输入的数字不能小于0"); let f0 = 1, f1 = 1, count = 0; while (count <...

> 每个题 都得扫一下二维码 很不方便呀~ 可以直接在小程序里刷题就可以了,空闲时间也可以方便在手机上直接刷题

> 每日一题会在下午四点在交流群集中讨论,五点 Github、交流群同步更新答案 扫描下方二维码,收藏关注,及时获取答案以及详细解析,同时可解锁800+道前端面试题。

> 每日一题会在下午四点在交流群集中讨论,五点 Github、交流群同步更新答案 ### 一、分析 因为每个请求处理时长不一致,可能会导致先发送的请求后响应,即请求响应顺序和请求发送顺序不一致,从而导致数据显示不正确。 即可以理解为连续触发多个请求,如何保证请求响应顺序和请求发送顺序一致。对于问题所在场景,用户只关心最后数据是否显示正确,即可以简化为:连续触发多个请求,如何保证最后响应的结果是最后发送的请求(不关注之前的请求是否发送或者响应成功) 类似场景:input输入框即时搜索,表格快速切换页码 ### 二、解决方案 防抖(过滤掉一些非必要的请求) + 取消上次未完成的请求(保证最后一次请求的响应顺序) 取消请求方法: - `XMLHttpRequest` 使用 `abort` `api` 取消请求 - `axios` 使用 `cancel token` 取消请求 伪代码(以 setTimeout 模拟请求,clearTimeout 取消请求)...

> 每日一题会在下午四点在交流群集中讨论,五点 Github、交流群同步更新答案 ### 一、React中setState后发生了什么 在代码中调用setState函数之后,React 会将传入的参数对象与组件当前的状态合并,然后触发所谓的调和过程(Reconciliation)。 经过调和过程,React 会以相对高效的方式根据新的状态构建 React 元素树并且着手重新渲染整个UI界面。 在 React 得到元素树之后,React 会自动计算出新的树与老树的节点差异,然后根据差异对界面进行最小化重渲染。 在差异计算算法中,React 能够相对精确地知道哪些位置发生了改变以及应该如何改变,这就保证了按需更新,而不是全部重新渲染。 ### 二、setState 为什么默认是异步 假如所有setState是同步的,意味着每执行一次setState时(有可能一个同步代码中,多次setState),都重新vnode diff + dom修改,这对性能来说是极为不好的。如果是异步,则可以把一个同步代码中的多个setState合并成一次组件更新。 ### 三、setState 什么时候是同步 在setTimeout或者原生事件中,setState是同步的。

> 每日一题会在下午四点在交流群集中讨论,五点 Github、交流群同步更新答案 **1)不要在循环,条件或嵌套函数中调用Hook,必须始终在React函数的顶层使用Hook** 这是因为React需要利用调用顺序来正确更新相应的状态,以及调用相应的钩子函数。一旦在循环或条件分支语句中调用Hook,就容易导致调用顺序的不一致性,从而产生难以预料到的后果。 **2)使用`useState`时候,使用push,pop,splice等直接更改数组对象的坑** 使用push直接更改数组无法获取到新值,应该采用析构方式,但是在class里面不会有这个问题 代码示例 ```js function Indicatorfilter() { let [num,setNums] = useState([0,1,2,3]) const test = () => { // 这里坑是直接采用push去更新num // setNums(num)是无法更新num的 // 必须使用num = [...num...

扫描下方二维码,获取答案以及详细解析,同时可解锁800+道前端面试题。

> 扫码是真的麻烦。。 @liuxiaojiu 扫码之后,在小程序中可以随时随地都能刷题

1)定义 - 数组是一个特殊对象,与常规对象的区别: - 1. 当由新元素添加到列表中时,自动更新length属性 - 2. 设置length属性,可以截断数组 - 3. 从Array.protoype中继承了方法 - 4. 属性为'Array' - 类数组是一个拥有length属性,并且他属性为非负整数的普通对象,类数组不能直接调用数组方法。 2)区别 本质:类数组是简单对象,它的原型关系与数组不同。 ```js // 原型关系和原始值转换 let arrayLike = { length: 10, }; console.log(arrayLike...

react组件间通信常见的几种情况: - 1. 父组件向子组件通信 - 2. 子组件向父组件通信 - 3. 跨级组件通信 - 4. 非嵌套关系的组件通信 1)父组件向子组件通信:父组件通过 props 向子组件传递需要的信息。 ```js // 子组件: Child const Child = props =>{ return {props.name} } // 父组件...