在 NavigationIOS 中推送视图时如何传递对象而不是类型?

Posted

技术标签:

【中文标题】在 NavigationIOS 中推送视图时如何传递对象而不是类型?【英文标题】:How passing an object instead of a type when pushing a view in a NavigationIOS? 【发布时间】:2015-06-22 07:05:29 【问题描述】:

我是 React Native 的新用户,我正在尝试使用 React Native 将一些 Swift 代码移植到 javascript

在 Swift 中,我有一个类负责实例化多个对象和一个 viewController,并将所有对象互连并设置它们对 viewController 的引用。

这是一个基本版本:

class A

  func instantiateView()
  
    let window = UIApplication.sharedApplication().windows[0] as! UIWindow;
    let viewController = // Instantiate a view controller...viewController
    let a = // Instantiate an object.
    let b = // Instantiate an object.
    let c = // Instantiate an object.


    viewController.a = a;
    viewController.b = b;
    viewController.c = c;

    if let navController = window.rootViewController as? UINavigationController
    
      navController.pushViewController(viewController, animated: true)
    
  

正如您在上面看到的,我实例化了一个视图并为其设置了属性。 但据我所知,使用 React Native 时,当我想在窗口中推送新视图时,我必须传递视图的类型而不是对象。

class MyApp extends React.Component 
  render() 
    return (
      <React.Navigatorios
        style=styles.container
        initialRoute=
          title: 'My App',
          component: MyFirstView,
        />
    );
  

在这里,我传递了MyFirstView 类型而不是MyFirstView 的对象。问题是我不能在这个类显示在窗口之前设置它的属性。

我宁愿以这种方式实例化视图:

class ReactNativeCrossPlatformModuleArchitectureApp extends React.Component 
  render() 
    var a = // First attribute
    var b = // Second attribute
    var c = // Third attribute

    var searchPageView = // Instantiate the View

    searchPageView.a = a;
    searchPageView.b = b;
    searchPageView.c = c;

    return (
      <React.NavigatorIOS
        style=styles.container
        initialRoute=
          title: 'My App',
          component: searchPageView,
        />
    );
  

有人知道是否有这样一种方法可以使用 ReactNative 实例化视图吗?

谢谢!

【问题讨论】:

【参考方案1】:

如果你查看 NavigatorIOS 的源代码,你可以看到当组件通过路由传入时,它被渲染为 RCTNavigatorItem 组件的子组件。

<Component
    navigator=this.navigator
    route=route
    ...route.passProps
/>

https://github.com/facebook/react-native/blob/master/Libraries/Components/Navigation/NavigatorIOS.ios.js#L613

因此,似乎没有内置的方法可以执行您的要求。

【讨论】:

感谢您的帮助!我正在寻找解决方法的想法。

以上是关于在 NavigationIOS 中推送视图时如何传递对象而不是类型?的主要内容,如果未能解决你的问题,请参考以下文章

当点击 FCM 推送通知时,如何在选项卡栏中打开特定的视图控制器?

在 iPhone 中推送 UIViewController 时如何更改标签栏项目的选定索引

如何检查用户之前是不是在 iOS 中查看过推送通知权限警报视图?

当 rootViewController 不是 UINavigationController 时推送视图

当用户使用 iOS 13 Swift 5 点击推送通知时,在特定视图中打开应用程序

弹出 MasterViewcontroller 时推送 DetailViewController