小编Lat*_*fah的帖子

在react-router-dom中使用BrowserRouter动态基本名称

我在构建多租户 SaaS 解决方案时遇到问题。对于每个租户,我希望他们使用子域,这样我就可以从 url 获取子域,调用返回有关该租户的数据的 REST api。

例如,

  1. 管理员(完全是另一个应用程序 - 管理应用程序)创建一个域名为 的租户:tenant1
  2. 在本地系统上的租户应用程序中,我能够访问tenant1.localhost:3000. 我获取了 url,并获取了域名。然后,我与域进行调用以获取租户的主题(这存储在 localStorage 中)。

不幸的是,我们在我的公司部署在 k8 上,所以我无法模仿这种行为。因此,devOps 团队建议我在上下文中使用子域,从而拥有localhost:3000/tenant1. 请记住,租户是动态的,所以我尝试了以下方法:

<BrowserRouter basename={"/:tenant"}>
    <Switch>
        <Route exact path="/login" name="Login" component={Login} />
        <Route exact path="/set-password/:token" name="Set Password" component={SetPassword} />
        <PrivateRoute path="/" name="Default Layout" component={DefaultLayout} /> 
    </Switch>              
</BrowserRouter>
Run Code Online (Sandbox Code Playgroud)

然而,上面的解决方案使我的 url 为 localhost:3000/:tenant/login

请问我如何在路由器中使用动态基本名称,以便它可以接受:

localhost:3000/tenant1 localhost:3000/tenant3 localhost:3000/tenant2ETC。

它可以允许任何,我的应用程序处理输入的错误域

javascript frontend reactjs react-router-v4 react-router-dom

11
推荐指数
3
解决办法
7131
查看次数

如何在 React JS 页面中使用 Cordova 插件

我想在我的 react JS 应用程序中使用一些 Cordova 插件,但该应用程序一直失败。我知道cordova 仅在运行时可用,因为我需要一种解决方法。

我的应用程序是通过 create react app with cordova here创建的

比如我想导入cordova-plugin-device来获取设备uuid,代码如下:

import React,  {Component} from 'react';
...    
var device = require("cordova-plugin-device");

class Login extends Component {
    handleSubmit = () => {
        const { phone, password } = this.state

        let params = {
            phonenumber: phone,
            password: password,
            deviceID:  device ? device.uuid : "test"

        }
        ...
   }
   render () {
       ...
   }

 }
}
Run Code Online (Sandbox Code Playgroud)

我在npm start运行时遇到错误npm build。这是错误Module not found: Can't resolve 'cordova-plugin-device' …

cordova reactjs cordova-plugins

4
推荐指数
1
解决办法
4347
查看次数