You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Navigation导航报错:this.props.navigation未定义求助

解决React Navigation中子组件无法获取navigation props的问题

嘿,我来帮你搞定这个报错!你遇到的undefined is not an object (evaluating '_this.props.navigation')问题,根源其实很简单:

你在Home组件里直接把SearchFilter当成普通子组件渲染(<SearchFilter/>),但navigation props只有通过StackNavigator直接导航到的页面才会自动注入。SearchFilter不是通过navigate('SearchFilter')跳转到的页面,所以它自然拿不到navigation这个属性,调用this.props.navigation.navigate就会报错啦。

下面给你两种最实用的解决办法:

方法一:手动从Home传递navigation props

既然Home是StackNavigator里的页面,它本身拥有完整的navigation props,那我们直接把这个属性传给SearchFilter就行:

修改Home组件的代码:

class Home extends React.Component {
  render() {
    return(
      <View style = {styles.main}>
        <Header/>
        {/* 这里把navigation props传递给SearchFilter */}
        <SearchFilter navigation={this.props.navigation}/>
        <ScrollView contentContainerStyle = {styles.scroll}>
          <Card />
        </ScrollView>
      </View>
    );
  }
}

这样SearchFilter里的this.props.navigation就有值了,你的onPress跳转逻辑就能正常运行。

方法二:使用withNavigation高阶组件(更推荐)

如果不想每次都手动传递navigation props,可以用React Navigation提供的withNavigation高阶组件来包装SearchFilter,这样不管它在哪里渲染,都能自动获取navigation props:

步骤1:导入withNavigation

import { withNavigation } from 'react-navigation';

步骤2:用withNavigation包装并导出SearchFilter

// 原来的SearchFilter类定义不变
class SearchFilter extends React.Component{
  render(){
    return (
      <View style={styles.main}>
        <View style={styles.wrapper}>
          <TouchableOpacity style={styles.buttonShape} onPress={
            () => this.props.navigation.navigate('Details')}
          >
            <Text style={styles.text}>Super-Market</Text>
            <Image source={require('./icons/supermarket.png')} />
          </TouchableOpacity>
        </View>
      </View>
    );
  }
}

// 用withNavigation包装后导出
export default withNavigation(SearchFilter);

这样你在Home里还是用<SearchFilter/>就行,不用传任何props,组件内部就能直接使用this.props.navigation了。

这两种方法都能解决你的问题,个人更推荐第二种,因为它更灵活,后续如果在其他地方复用SearchFilter也不用再手动传props啦。

内容的提问来源于stack exchange,提问作者Ninja

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:35:59