在react原生应用的Web版本上使用条带

fnatzsnv  于 2022-11-17  发布在  React
关注(0)|答案(2)|浏览(153)

我不是一个开发人员,我有点绝望。我有一个基于symphony/react-native的应用程序。现在我们在应用程序上实现了条纹支付,我的开发人员似乎有点走投无路。
我选择react native的原因是我的移动的和网络应用程序有一个代码库。我试图使用stripe来处理我的应用程序上的付款,但似乎stripe-react-native不运行在网络平台上。
有没有人想到一种方法,使条纹工作在网络上,而不必建立一个单独的React应用程序?
我想使用一个平台条件从react原生模块或stripe.js脚本运行stripe,但我被告知这是不可能的。
如果有人知道我们可以试试,那会很有帮助。
谢谢

qpgpyjmq

qpgpyjmq1#

不幸的是,事实就是如此。你需要一个单独的web代码库和一个单独的移动的代码库。ReactNative是移动的,对于web,你有很多选择,就像常规的web开发一样。
你可以选择ReactNative用于移动的,ReactJS用于网络端,它们在某种程度上是相似的,但它们仍然是不同的平台。

ia2d9nvy

ia2d9nvy2#

如果使用react-native-web,则可以通过各种方式覆盖不兼容的节点模块。
启动/构建RN Web的一种方法是使用react-app-rewired,在config-overrides.js中,您可以声明指向您自己的react-native-stripe版本的路径。
您需要自己实现它,为每个方法编写一个等效的实现,并以某种方式加载Web SDK for Stripe。
这是非常可行的,如果你有经验和一个类似的过程,以嘲笑模块在Jest。
以下是一个示例:

// config-overrides.js used by react-app-rewired

const webpack = require('webpack');
const path = require('path');

module.exports = {
  webpack: function (config, env) {
    config.resolve.alias['@stripe/stripe-react-native'] = path.resolve(
      'web/react-native-stripe',
    );
  },
};

(此处为示例的简化版本)
但是,如果您不需要修改现有的代码库来支持react-native-web,我强烈建议您使用Expo开始一个新的项目,它将从一开始就支持Web、iOS和Android。现在可以在Expo中为不兼容的库编写polyfill模块。

相关问题