我正在开发本机应用程序,遇到一个问题:
我希望当我单击按钮(或直接单击按钮所在的视图)时,在屏幕上显示一个Webview并打开直接传入参数的链接。
但是什么也没发生。
这是我的代码:
return (
<ScrollView style={[style.case1]} refreshControl={<RefreshControl refreshing={this.state.refreshing} onRefresh={this.handleRefresh} />} >
{
this.state.orders.map(function (order) {
let a = _this.getPosts(order);
let Final = _this.splitString(a.message," ");
return (
<View style={[style.case2]} key={a.message} >
<Couleur couleur={Final[4]} />
<Text style={[style.Nom]} >Nom : {Final[1]}</Text>
<Text style={[style.Nom]} >Numéro de build : {Final[2]}</Text>
<Button onPress={<Web url={Final[3]} />} title="Click"/>
</View>
);
})}
</ScrollView>
);
和WebView类:
import React, {Component} from "react";
import {WebView} from "react-native";
export default class Web extends Component {
constructor(props){
super(props);
}
render() {
let uri = this.props.url;
return(
<WebView
ref={(ref) => {this.webview = ref;}}
source={{uri}}
style={{marginTop:20}}
/>
)
}
}
我得到了这个错误:
“对象不是函数(评估'this.props.onPress(e)')
如果有人帮助我,我将非常高兴! :)
最佳答案
onPress操作必须是一个执行某些功能的函数。现在,您正在将操作设置为组件,并且响应不知道该如何处理。
如果没有某种导航库来控制您的视图,则可以执行诸如onPress设置某种状态来控制渲染功能的一部分的状态,该功能可以显示现有页面或新的“ Web”组件。
因此,使onPress像这样:onPress={e => this.setState({showWebPart:true})}
然后,在您当前的渲染函数中,您可能会有一个三元组:
{this.state.showWebPart ? <Web url={Final[3]} /> : ..current render stuff}