11

我试图弄清楚如何将 React Router 与 React VR 连接起来。

首先,我应该使用react-router dom/native吗?目前尚不清楚,因为 React VR 构建在 React Native 之上,但在浏览器中运行。

这是我遇到问题的代码。

import React from 'react';

import { AppRegistry } from 'react-vr';

import {
  BrowserRouter as Router,
  Route
} from 'react-router-dom'

import Landing from './components/Landing';
import Video from './components/Video';

export default class WelcomeToVR extends React.Component {
  render() {
    return (
      <Router>
        <Route exact path={'/vr/'} component={Landing} />
        <Route exact path={'/vr/video/'} component={Video} />
      </Router>
    );
  }
};

AppRegistry.registerComponent('WelcomeToVR', () => WelcomeToVR);

上面的代码在打开浏览器时返回以下错误/vr/React 路由器 + React VR 错误

4

3 回答 3

3

我根据remydib使用 react-router 4.1.2 提到的 Ryan Florence 视频提供了这个解决方案。

在主应用程序组件中:

import { MemoryRouter, Redirect, Route, Switch } from 'react-router';

...

    <MemoryRouter>
    ...
    </MemoryRouter>

在使用 VrButton 的组件中:

export class NavBtn extends React.Component {

    static contextTypes = {
        router: React.PropTypes.object.isRequired,
    };

    render() {
        const { to } = this.props;
        const onClick = () => this.context.router.history.push(to);

        return (
            <VrButton onClick={onClick}>
               ...
            </VrButton>
        );
    }
}

npm 中有react-router-vr包,但它看起来只是占位符。遗憾的是,目前不支持浏览器 URL。

于 2017-08-07T10:43:32.257 回答
1

React Router 的作者 Ryan Florence 在这里解释了他是如何做到的:https ://twitter.com/ryanflorence/status/808890440929771520

不过我不知道图书馆。

于 2017-06-20T04:41:52.360 回答
-1

React-VR 不使用其他应用程序的正常历史 API。内存路由器是上面列出的选项,但我推荐条件渲染。

您可以改用 Native Modules 中的 History API 将信息加载到 URL 中。

于 2017-11-22T04:38:12.850 回答