shopee前端一面(3.3 16:00)
七崽爱吃小饼干2026/03/04阅读 1
codeType
1. 自我介绍
2. mobx和redux的区别
3. mobx有哪些特性
4. 页面关闭以后埋点数据怎么处理的
5. 受控表单和非受控表单,受控表单是怎么实现的,具体写一个例子
6. 事件循环题
7. 上下文对象以及函数的默认调用等方式问题
8. 数字数组=》除自己以外所有数字的积,不能用除法
9. 事件订阅类的实现on、emit、off、once
10. 给一个组件绑定了一个点击回调,每次点击回调都会触发一次ajax请求,有什么问题。
1. mobx和redux的区别
我觉得类似于vue和React的区别,两者的思想高度一致,mobx和vue一样使用的是响应式,React和redux都使用单向数据流。
2. 页面关闭后的埋点数据怎么处理
visibilitychange、beforeunload 与 keepalive、navigator.sendBeacon
3. 受控表单与非受控表单
初始化时非受控表单通过ref.current.value来修过value。 提交表单时同样直接通过ref获取值。
4. 事件循环问题
5. 上下文对象以及函数的调用
6. 数字数组=》除自己以外所有数字的积,不能用除法
https://visionaryblog.cn/reader/102
7. 给一个组件绑定了一个点击回调,每次点击回调都会触发一次ajax请求,有什么问题。
会重复提交。
可以通过防抖、节流的方式减少触发频率。 或者可以用一个loading状态去锁定 或者可以在发请求前abort上一个请求
jsx
const controllerRef = useRef(null);
const handleClick = () => {
// 取消上一次请求
if (controllerRef.current) {
controllerRef.current.abort();
}
const controller = new AbortController();
controllerRef.current = controller;
fetch('/api/data', { signal: controller.signal });
};