如何无需修改直接在React Web中使用React Native插件代码?
Webview方案:能用但不是最佳选择
这是唯一能做到完全不修改RN插件代码的方式——把你的RN插件打包成一个独立的RN应用,然后在React Web项目里用<iframe>或者Webview组件嵌入进去。好处是不用碰插件代码,坏处也很突出:额外的RN运行时会拖慢性能,Web页面和RN插件之间的交互只能靠postMessage来回传数据,体验割裂,而且没法用Web的原生样式和API。如果你的插件是简单展示型的,临时用用还行,复杂交互的话用户体验会很差。react-native-web适配:接近无修改的折中方案
如果你的插件只是纯UI组件,没用到RN专属的原生API(比如Camera、AsyncStorage、Alert这些),可以试试react-native-web。这个库能把RN的基础组件(View、Text、Image之类)转换成Web对应的原生元素,你只需要在Web项目里配置babel和webpack支持它,插件代码几乎不用改就能在Web上跑。但要是插件依赖了RN的原生模块,这种方式就失效了,得针对Web重新实现那些模块的功能。拆分逻辑+双端UI:长期最优解
把插件里的核心业务逻辑抽出来写成纯JS/TS函数(不依赖任何RN或Web的特定API),然后分别给RN和Web写对应的UI层。这种方式虽然需要拆分代码,但后续维护起来最省心,还能充分发挥两端的原生能力。如果你的插件以后还要迭代更新,这才是靠谱的做法。
说白了,完全不用修改就完美复用在Web上不太现实,得根据插件的类型选合适的方案:临时用选Webview,纯UI选react-native-web,有原生能力需求就拆分逻辑做双端适配。
内容的提问来源于stack exchange,提问作者satish

