在 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 时推送视图