如何使用react-native-web和react-navigation在一起并从web url访问

时间:2018-03-09 04:33:31

标签: react-native react-navigation react-router-v4 react-native-web react-router-native

更新

反应导航网络支持已完成。按照这个: https://reactnavigation.org/docs/en/web-support.html

ORIGIN

我尝试在react-native和web之间共享我的代码。 当我尝试react-native-web时,它运作良好。 但是只有一个问题,如何从网址访问特定的屏幕? 我阅读了react-navigation的文档,没有任何相关内容。 和react-router-native可以捕获web url, 但它有导航器喜欢StackNavigator / DrawerNavigator。 和想法?

2 个答案:

答案 0 :(得分:1)

我不确定在您发布此问题时情况如何,但是您现在肯定可以在Web上使用react-navigation。

现在,通过链接,我们可以处理Android和iOS上的React Native应用中的深层链接,以及 在网络上使用时,在浏览器中启用URL集成。

NavigationContainer组件具有一个链接道具,可让您绘制路线。


    const linking = {
      prefixes: ['https://mychat.com', 'mychat://'],
      config: {
        screens: {
          Chat: 'feed/:sort',
          Profile: 'user',
        },
      },
    };


    function App() {
      return (
        <NavigationContainer linking={linking} fallback={<Text>Loading...</Text>}>
          {/* content */}
        </NavigationContainer>
      );
    }

一旦我们确定了应用程序中所有路由或“链接”的内容,就可以开始使用Link组件进行导航,就像在正常的React Web应用程序中一样,如果您使用react-router-dom。


   import { Link } from '@react-navigation/native';

// ...

   function Home() {
     return <Link to="/profile/jane">Go to Jane's profile</Link>;
   }

这些链接组件应该在移动版本和Web版本上都可以使用。

https://reactnavigation.org/docs/configuring-links/

https://reactnavigation.org/docs/deep-linking/

https://reactnavigation.org/docs/link

答案 1 :(得分:0)

我不认为这是可能的,因为ReactNavigation使用内部状态对象。请记住,它是移动框架,没有URL路由的概念。 我还想指出,即使RN要求网络支持,您仍需要谨慎选择组件,因为并非所有行为都相同(从内存来看,FlatList不支持触摸滚动)