本文会不定期不断更新, 想查看最新版本请移步至 https://github.com/forrest23/react-native-interview
1.React Native 相对于原生的 ios 和 Android 有哪些优势?
1. 性能媲美原生 APP 2. 使用 JavaScript 编码, 只要学习这一种语言 3. 绝大部分代码安卓和 IOS 都能共用 4. 组件式开发, 代码重用性很高 5. 跟编写网页一般, 修改代码后即可自动刷新, 不需要慢慢编译, 节省很多编译等待时间 6. 支持 APP 热更新, 更新无需重新安装 APP
缺点: 内存占用相对较高 版本还不稳定, 一直在更新, 现在还没有推出稳定的 1.0 版本
2.React Native 组件的生命周期
生命周期 调用次数 能否使用 setSate() getDefaultProps 1(全局调用一次) 否 getInitialState 1 否 componentWillMount 1 是 render>=1 否 componentDidMount 1 是 componentWillReceiveProps>=0 是 shouldComponentUpdate>=0 否 componentWillUpdate>=0 否 componentDidUpdate>=0 否 componentWillUnmount 1 否
3. 当你调用 setState 的时候, 发生了什么事?
当调用 setState 时, React 会做的第一件事情是将传递给 setState 的对象合并到组件的当前状态 这将启动一个称为和解 (reconciliation) 的过程 和解 (reconciliation) 的最终目标是以最有效的方式, 根据这个新的状态来更新 UI 为此, React 将构建一个新的 React 元素树(您可以将其视为 UI 的对象表示) 一旦有了这个树, 为了弄清 UI 如何响应新的状态而改变, React 会将这个新树与上一个元素树相比较( diff ) 通过这样做, React 将会知道发生的确切变化, 并且通过了解发生什么变化, 只需在绝对必要的情况下进行更新即可最小化 UI 的占用空间
4.props 和 state 相同点和不同点
1. 不管是 props 还是 state 的改变, 都会引发 render 的重新渲染 2. 都能由自身组件的相应初始化函数设定初始值
来源: https://juejin.im/post/5ab9dce951882555712c6091