我正在开发本机应用程序,遇到一个问题:

我希望当我单击按钮(或直接单击按钮所在的视图)时,在屏幕上显示一个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}

10-05 21:43