React Native面试知识点
本文原创首发于公众号:ReactNative开发圈,转载需注明出处。 本文会不定期不断更新,想查看最新版本请移步至https://github.com/forrest23/... 1.React Native相对于原生的ios和Android有哪些优势?1.性能媲美原生APP 缺点: 2.React Native组件的生命周期
生命周期 调用次数 能否使用 setSate() 3.当你调用setState的时候,发生了什么事?当调用 setState 时,React会做的第一件事情是将传递给 setState 的对象合并到组件的当前状态。 4.props和state相同点和不同点1.不管是props还是state的改变,都会引发render的重新渲染。 不同点 2.修改方式:state只能在自身组件中setState,不能由父组件修改;props只能由父组件修改,不能在自身组件修改。 3.对子组件:props是一个父组件传递给子组件的数据流,这个数据流可以一直传递到子孙组件;state代表的是一个组件内部自身的状态,只能在自身组件中存在。 5.shouldComponentUpdate 应该做什么其实这个问题也是跟reconciliation有关系。 6.reactJS的props.children.map函数来遍历会收到异常提示,为什么?应该如何遍历?this.props.children 的值有三种可能: 1.当前组件没有子节点,它就是 undefined; 2.有一个子节点,数据类型是 object ; 3.有多个子节点,数据类型就是 array 。 系统提供React.Children.map()方法安全的遍历子节点对象 7.redux状态管理的流程
8.加载bundle的机制要实现RN的脚本热更新,我们要搞明白RN是如何去加载脚本的。 在编写业务逻辑的时候,我们会有许多个js文件,打包的时候RN会将这些个js文件打包成一个叫index.android.bundle(ios的是index.ios.bundle)的文件,所有的js代码(包括rn源代码、第三方库、业务逻辑的代码)都在这一个文件里,启动App时会第一时间加载bundle文件,所以脚本热更新要做的事情就是替换掉这个bundle文件。 9.Flex布局采用Flex布局的元素,称为Flex容器(flex Container),简称"容器"。它的所有子元素自动成为容器成员,称为Flex项目(flex item),简称"项目"。 容器默认存在两根轴:水平的主轴(main axis)和垂直的交叉轴(cross axis)。主轴的开始位置(与边框的交叉点)叫做main start,结束位置叫做main end;交叉轴的开始位置叫做cross start,结束位置叫做cross end。 项目默认沿主轴排列。单个项目占据的主轴空间叫做main size,占据的交叉轴空间叫做cross size。 容器的属性 10.请简述 code push 的原理code push 调用 react native 的打包命令,将当前环境的非 native 代码全量打包成一个 bundle 文件,然后上传到微软云服务器(Windows Azure)。 在 app 中启动页(或 splash 页)编写请求更新的代码(请求包含了本地版本,hashCode、appToken 等信息),微软服务端对比本地 js bundle 版本和微软服务器的版本,如果本地版本低,就下载新的 js bundle 下来后实现更新(code push 框架实现)。 11.Redux中同步 action 与异步 action 最大的区别是什么同步只返回一个普通 action 对象。而异步操作中途会返回一个 promise 函数。当然在 promise 函数处理完毕后也会返回一个普通 action 对象。thunk 中间件就是判断如果返回的是函数,则不传导给 reducer,直到检测到是普通 action 对象,才交由 reducer 处理。 本文会不定期不断更新,想查看最新版本请移步至https://github.com/forrest23/... 本文题目节选自互联网,如有侵权请联系我! 欢迎关注我的微信公众号:ReactNative开发圈 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |