【问题标题】:React Native error: undefined is not an object (evaluating '_this2.props.navigator.push')React Native 错误:未定义不是对象(评估 '_this2.props.navigator.push')
【发布时间】:2016-06-03 06:12:59
【问题描述】:

所以基本上我在与导航器相关的标题中遇到错误。 当我按下图标时会弹出错误。

我基本上想做的是在顶部制作一个标签栏,可以在三种不同的视图之间切换:提要、wiki 和留言板

这是我的 index.android.js:(导入导航)

_renderScene(route, navigator) {
    var globalNavigatorProps = {navigator};

    switch(route.ident) {
        case "FeedView":
            return(
                <Feed
                 {...globalNavigatorProps}
                />
            );

        case "WikiView":
            return(
                <View>
                    <Text>
                        {'Hello'};
                    </Text>
                </View>
            );

        case "BoardView":
            return(
                <View>
                    <Text>
                        {'Hello'};
                    </Text>
                </View>
            );

        default:
            console.log(`Something went wrong ${route}`);
    }
}

render(){
    return(
        <View>
            <Nav />
            <Navigator
                initialRoute={{ident:"Feed"}}
                ref="appNavigator"
                renderScene={ this._renderScene }
            />

        </View>
    );
}

这是我的 Nav.js:

constructor(props){
    super(props);
}

render(){

    console.log(this.props.navigator);
    return(
        <View style={{flexDirection: "column"}}>
            <View style={styles.nav}>
                <Icon onPress={(event) => this.props.navigator.push({ident: "Feed"})} name="newspaper-o" size={22}/>
                <Icon name="wikipedia-w" size={22}/>
                <Icon name="comments" size={22}/>
            </View>
            <View style={styles.divider}/>
        </View>
    );
}

_changeView(type){

}

【问题讨论】:

    标签: javascript android reactjs react-native


    【解决方案1】:

    我认为这不是问题,但 renderScene 函数不会绑定到 react 组件。

    尝试将renderScene={ this._renderScene } 变成renderScene={ this._renderScene.bind(this) }

    【讨论】:

    • 问题是 没有对导航器的引用。您需要将 放在您的 renderScene 函数中,并将 navigator 作为属性传递以使其工作。
    【解决方案2】:

    如果您尝试实现选项卡式视图,有更好的方法来实现,您可以随时使用开源模块,例如 https://github.com/skv-headless/react-native-scrollable-tab-view 开发人员以易于使用的方式制作了它,并且该示例足以完成大部分内容。

    因此,我建议不要自己创建此类组件,而是使用社区制作的模块。

    希望我的回答对你有所帮助。

    【讨论】:

    • 我实际上尝试过使用该模块,但我不希望滚动切换选项卡,而且我真的不知道如何更改它。
    • 嗯,你总是可以在原生 android 中做,然后写一个桥到它,这很简单,让我看看我能不能找到别的东西
    【解决方案3】:

    这个错误总是在你没有绑定(this)的时候出现,检查你的图标模块onPress方法

    【讨论】:

      猜你喜欢
      • 2020-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-05
      • 1970-01-01
      • 1970-01-01
      • 2016-09-29
      • 1970-01-01
      相关资源
      最近更新 更多