Javascript 如何将参数从React Native发送到Native
WebView.jsJavascript 如何将参数从React Native发送到Native,javascript,ios,objective-c,react-native,Javascript,Ios,Objective C,React Native,WebView.js // WebView.js var PropTypes = require('ReactPropTypes') var React = require('React') import { requireNativeComponent } from 'react-native' var UIWebView = React.createClass({ propTypes: { url: PropTypes.string }, render () {
// WebView.js
var PropTypes = require('ReactPropTypes')
var React = require('React')
import { requireNativeComponent } from 'react-native'
var UIWebView = React.createClass({
propTypes: {
url: PropTypes.string
},
render () {
return <RCTUIWebView {...this.props} />
}
})
var RCTUIWebView = requireNativeComponent('RCTUIWebView', UIWebView)
module.exports = UIWebView
RCTUIWebView.h
// RCTUIWebView.h
#ifndef RCTUIWebView_h
#define RCTUIWebView_h
#import <UIKit/UIKit.h>
#import <UIView+React.h>
@class RCTUIWebView;
@interface RCTUIWebView : NSObject
@property (nonatomic, copy) NSString *url;
//@property (nonatomic, assign) NSString *uri;
- (UIWebView *) getWebView;
@end
#endif /* RCTUIWebView_h */
//RCTUIWebView.h
#ifndef RCTUIWebView\u h
#定义RCTUIWebView\u h
#进口
#进口
@类RCTUIWebView;
@接口RCTUIWebView:NSObject
@属性(非原子,复制)NSString*url;
//@属性(非原子,赋值)NSString*uri;
-(UIWebView*)getWebView;
@结束
#endif/*RCTUIWebView\u h*/
RCTUIWebView.m
// RCTUIWebView.m
#import <Foundation/Foundation.h>
#import "RCTUIWebView.h"
#import "RCTBridge.h"
#import "RCTEventDispatcher.h"
@implementation RCTUIWebView
NSString *URL = @"http://www.baidu.com";
- (void) setUrl:(NSString *)url {
URL = url;
}
- (UIWebView *) getWebView {
UIWebView *webview = [[UIWebView alloc] init];
NSURLRequest *request =[NSURLRequest requestWithURL:[ NSURL URLWithString: URL]];
[webview loadRequest:request];
return webview;
}
@end
//RCTUIWebView.m
#进口
#导入“RCTUIWebView.h”
#导入“RCTBridge.h”
#导入“RCTEventDispatcher.h”
@RCTUIWebView的实现
NSString*URL=@”http://www.baidu.com";
-(void)setUrl:(NSString*)url{
URL=URL;
}
-(UIWebView*)getWebView{
UIWebView*webview=[[UIWebView alloc]init];
NSURLRequest*request=[NSURLRequest requestWithURL:[NSURL URLWithString:URL]];
[webview加载请求:请求];
返回webview;
}
@结束
我试图用参数“url”呈现它
var BrowserView = require('./WebView')
<BrowserView
style={{width: 400, height: 500}}
url={this.state.event.landingPage}
/>
var BrowserView=require(“./WebView”)
它表明
“执行UI块时引发异常:-[UIWebView setUrl:]:
无法识别的选择器设置为实例0x7fcf2de1e180“
在刺激器和显示
“[错误][tid:main][RCTNavigator.m:514]错误
设置带有标记#328的RCTUIWebView的属性“url”:设置错误
标记为#333的RCTUIWebView的属性“url”:无法调整当前值
“超出可用视图的堆栈顶部”
在Xcode控制台中
我不明白为什么
如果我修改了渲染部分:
var BrowserView = require('./WebView')
<BrowserView
style={{width: 400, height: 500}}
//url={this.state.event.landingPage}
/>
var BrowserView=require(“./WebView”)
很好。在RCTWebViewManager.m中返回RCTUIWebView的实例
// RCTWebViewManager.m
#import "RCTUIWebViewManager.h"
#import "RCTUIWebView.h"
#import "RCTBridge.h"
#import "RCTEventDispatcher.h"
#import "UIView+React.h"
@implementation RCTUIWebViewManager
RCT_EXPORT_MODULE()
RCT_EXPORT_VIEW_PROPERTY(url, NSString);
- (UIView *)view
{
RCTUIWebView *rctuiwebview = [[RCTUIWebView alloc] init];
return [rctuiwebview getWebView];
}
@end
// RCTWebViewManager.m
#import "RCTUIWebViewManager.h"
#import "RCTUIWebView.h"
@implementation RCTUIWebViewManager
RCT_EXPORT_MODULE()
RCT_EXPORT_VIEW_PROPERTY(url, NSString);
- (UIView *)view
{
RCTUIWebView *rctuiwebview = [[RCTUIWebView alloc] init];
return rctuiwebview;
}
@end
返回RCTWebViewManager.m中RCTUIWebView的实例
// RCTWebViewManager.m
#import "RCTUIWebViewManager.h"
#import "RCTUIWebView.h"
#import "RCTBridge.h"
#import "RCTEventDispatcher.h"
#import "UIView+React.h"
@implementation RCTUIWebViewManager
RCT_EXPORT_MODULE()
RCT_EXPORT_VIEW_PROPERTY(url, NSString);
- (UIView *)view
{
RCTUIWebView *rctuiwebview = [[RCTUIWebView alloc] init];
return [rctuiwebview getWebView];
}
@end
// RCTWebViewManager.m
#import "RCTUIWebViewManager.h"
#import "RCTUIWebView.h"
@implementation RCTUIWebViewManager
RCT_EXPORT_MODULE()
RCT_EXPORT_VIEW_PROPERTY(url, NSString);
- (UIView *)view
{
RCTUIWebView *rctuiwebview = [[RCTUIWebView alloc] init];
return rctuiwebview;
}
@end