多Root Component场景下能否使用CodePush进行热更新?
多根组件下能否使用CodePush?
我在index.js里注册了多个根组件,代码如下:
import RNUserInfo from 'custom_auth/react/user/user-info/components/entry/user-info' AppRegistry.registerComponent('RNUserInfo', () => RNUserInfo); import RNProduct from 'product/react/components/entry/product-entry' AppRegistry.registerComponent('RNProduct', () => RNProduct);请问在此配置下能否使用CodePush?目前我仅找到单根组件的相关示例。
没问题的,多根组件场景下完全可以用CodePush!我之前帮不少开发者处理过类似的配置,给你捋捋具体怎么操作:
核心思路
CodePush的本质是包裹需要热更新的根组件,不管你有多少个根组件,只要给每个需要更新的组件都加上CodePush的包裹层就行了,和单根组件的逻辑一致,只是需要重复这个包裹步骤。
具体配置步骤
- 先确保你已经完成CodePush的基础安装与初始化工作(如果还没做的话,先搞定这一步)
- 修改你的index.js代码,给每个根组件单独添加CodePush包裹:
import CodePush from 'react-native-code-push'; import RNUserInfo from 'custom_auth/react/user/user-info/components/entry/user-info'; import RNProduct from 'product/react/components/entry/product-entry'; // 给RNUserInfo组件添加CodePush包裹 const CodePushRNUserInfo = CodePush(RNUserInfo); AppRegistry.registerComponent('RNUserInfo', () => CodePushRNUserInfo); // 给RNProduct组件添加CodePush包裹 const CodePushRNProduct = CodePush(RNProduct); AppRegistry.registerComponent('RNProduct', () => CodePushRNProduct);
进阶:自定义每个组件的更新策略
如果你的不同组件需要不同的更新规则(比如不同的部署环境、更新频率),可以给每个组件单独配置CodePush参数,比如指定不同的部署密钥:
// 针对RNUserInfo使用专属的部署密钥和更新策略 const CodePushRNUserInfo = CodePush({ deploymentKey: 'YOUR_USER_INFO_DEPLOYMENT_KEY', checkFrequency: CodePush.CheckFrequency.ON_APP_START })(RNUserInfo); // 针对RNProduct使用另一个部署密钥 const CodePushRNProduct = CodePush({ deploymentKey: 'YOUR_PRODUCT_DEPLOYMENT_KEY', installMode: CodePush.InstallMode.IMMEDIATE })(RNProduct);
注意事项
- 如果你给不同组件用了不同的部署密钥,需要在CodePush控制台分别创建对应的部署(或者给同一个应用创建多个部署环境)
- 发布更新时,可以通过
code-push release-react命令指定对应的应用名称或部署密钥,比如:# 给RNUserInfo发布更新 code-push release-react YourAppName ios --deploymentName UserInfoStaging # 给RNProduct发布更新 code-push release-react YourAppName android --deploymentName ProductProduction - 如果多个组件可以共享同一个更新包,也可以使用同一个部署密钥,这样一次发布就能同步更新所有组件
内容的提问来源于stack exchange,提问作者eugene
相关产品推荐
相关产品推荐

