在 React 中通过路由传递服务实例

Passing an Instance of a Service Through a Route in React

在这种情况下,我正在使用 React Router v4,这一点很重要。

我有一个 App 组件,其中成功实例化了一个 AuthService 对象。

我想获得相同 Auth 对象实例的某些组件,这些组件是通过 Route 定义的。

这是我的代码示例:

const auth = new AuthService();

class App extends Component {

  render() {
    return (
      <div>
        <ul>
          <li><Link to="/">Home</Link></li>
          <li><Link to="/splash">Login</Link></li>
        </ul>
        <Route exact path="/" component={Home} auth={auth}/>
        <Route exact path="/splash" component={SplashPage} auth={auth}/>
      </div>
    );
  }
}

export default App;

当 Home 或 SplashPage 呈现时,它们具有来自 Route 的典型道具,但不知道身份验证。

如何获得 auth 作为 props 之一,以及那些从 Route 到 Home 和 SplashPage 的 props?谢谢。

你可以使用路由 render 函数,将 auth 作为 prop 传递给需要 auth 的组件。

<Route {...routeConfig here} render={props => (
      <Home {...props} auth={auth}/>
)}/>

这样你就可以传递你的组件需要的自定义道具。 这是文档的 link