如何修复React Native使用NativeBase时出现的SSRProvider警告
NativeBase 触发SSRProvider相关警告的解决方法
你遇到的警告内容如下:
进行服务端渲染时,你必须将应用包裹在SSRProvider中,以保证客户端与服务端生成的ID一致。FormControl@http://localhost:8081/index.bundle?platform=ios&dev=true&minify=false&modulesOnly=false&runModule=true&app=com.wenyang.DanceConnectyCube:162364:111 RCTView View
该警告是NativeBase v3.x版本的已知兼容性问题,即便你没有使用服务端渲染、仅开发纯React Native应用也可能触发,可按以下任意一种方法解决:
- 方法1:全局添加SSRProvider包裹
该方案无副作用,是官方推荐的修复方式,只需在应用入口的根组件外层额外加一层SSRProvider即可,示例代码如下:// 入口文件如App.js / index.js import { NativeBaseProvider, SSRProvider } from 'native-base'; import App from './src/App'; export default function Root() { return ( <SSRProvider> <NativeBaseProvider> {/* 原有应用的所有内容 */} <App /> </NativeBaseProvider> </SSRProvider> ); } - 方法2:屏蔽指定警告
如果你确定不需要用到SSR相关能力,也可以直接通过React Native的LogBox屏蔽该警告,不会影响应用正常运行,代码如下:import { LogBox } from 'react-native'; LogBox.ignoreLogs(['进行服务端渲染时,你必须将应用包裹在SSRProvider中']); - 方法3:升级NativeBase到最新稳定版
该问题已经在NativeBase后续的迭代版本中修复,框架会自动识别React Native环境、默认跳过SSR相关校验,无需额外配置即可消除警告,升级命令如下:
使用npm:npm install native-base@latest
使用yarn:yarn add native-base@latest
内容的提问来源于stack exchange,提问作者preston
相关产品推荐
相关产品推荐

