- webpack 的核心概念?entry 如何配置?如何配置多入口
- ES6 的内容?说一说块级作用域?if() let a = 1;能执行么
- js 定义函数的方式?区别
- 知不知道高阶组件
- 当前使用的 react 版本?react 新增的内容?弃用的生命周期
- postmessage 是如何工作的
- mobx数据流管理,@observer的原理,实现的函数
- 用的react的版本号?webpack版本
- 介绍一下你做过的最好的项目
- rem单位如何定义?比如视觉稿是750px,监听window.onsize事件之后怎么处理
(上市)
js 定义函数的方式?区别?
函数声明 function a(){}
和 函数表达式 var a = function(){}
- 函数声明会发生变量提升;函数表达式的不会
- 函数表达式后面可以加上括号执行;函数声明不可以
- 当使用两种方式声明同一个函数名的时候,1. 如果在声明之后调用,会执行函数表达式声明的函数 2. 如果在声明之前调用,会执行函数声明方式的声明的函数
postmessage 是如何工作的
// 父窗口通过监听message来获取值
window.addEventListener(
'message',
function(e) {
listenEvent(e);
switch (e.data.fn) {
case 'xx':
// 这里写代码
break;
},
false
);
// 向父窗口发送消息
window.parent.postMessage(JSON.stringify({
fn: 'xx',
data: { tab: tab, num: idx}
}), '*');
高阶组件
本质:高阶组件就是一个函数,该函数接收一个组件作为参数,并返回一个新的组件
使用场景:给组件添加或者修改一些特定的 props,添加一些权限管理或者增加一些优化,都可以考虑使用 HOC
作用:
-
代码复用
-
增删改 props
-
渲染劫持
页面权限管理:当要跳转页面的时候检查用户是否有对应的权限,如果有的话:渲染页面,如果没有的话:跳转到其他页面或者登录页面
注意点:
- 不要随意的删除 props,避免包裹的函数中使用到
- 不能拿到 ref
connect 原理:react 的 connect 函数返回的就是一个 HOC,他获取 wrappedComponent,监听 react store,把下级组件需要的 state(通过 mapStateToProps) 和 dispatch(通过 mapDispatchToProps 获取)绑定到 wrappedComponent 的 props 上。