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

Expo环境下Stack.Navigator持续加载第二个页面且无法返回首页问题求助

解决Expo Stack.Navigator持续加载页面且无法返回的问题

老兄,我看了你的代码,发现几个关键问题导致了这个异常,咱们一个个来修复:

1. 致命的组件导入错误

这是最核心的问题!在你的App.js里,你把HomeScreen错误地导入成了SearchScreen:

import SearchScreen from './Components/SearchScreen'
import HomeScreen from './Components/SearchScreen' // 这里完全错了!

这就导致HomeScreen和SearchScreen其实是同一个组件,当你尝试跳转到Shopping页面时,相当于在同一个组件之间循环跳转,导航栈直接乱掉,自然会出现持续加载、无法返回的情况。

修复方法:把HomeScreen的导入路径改成正确的文件路径:

import SearchScreen from './Components/SearchScreen'
import HomeScreen from './Components/HomeScreen' // 改成你的HomeScreen组件文件路径

2. 返回逻辑的不合理用法

在SearchScreen的headerLeft里,你用navigation.navigate("SUSH")来实现返回,这其实不是“返回”,而是重新添加一个SUSH页面到导航栈,时间长了栈里会堆一堆重复页面,也会导致返回异常。

优化方式:改用navigation.goBack(),这才是标准的返回上一页的方法:

headerLeft: () => (
  <TouchableOpacity onPress={() => navigation.goBack()} >
    <Text>Back</Text>
  </TouchableOpacity>
),

3. 触摸事件的小瑕疵

在HomeScreen的列表项里,你用onStartShouldSetResponder触发跳转,但这个方法需要返回布尔值来声明是否要响应触摸事件,你现在没返回值,虽然不直接导致加载问题,但可能引发奇怪的触摸行为。修正一下:

onStartShouldSetResponder={() => {
  this.props.navigation.navigate('Shopping', { name: 'Jane' })
  return true; // 明确告知组件要处理这个触摸事件
}}

4. 冗余代码清理(可选但推荐)

SearchScreen的TextInput里重复写了两次value={value},删掉其中一个就行,不影响功能但代码更整洁:

<TextInput 
  style={{fontSize:16,width:305,padding:8, backgroundColor:'#e6e6e6',color:'black',}}
  value={value}
  onChangeText={(searchtext) => setValue(searchtext)}
  placeholder={"Search"}
  placeholderTextColor={'#454545'}
></TextInput>

把这些问题都修复后,你的导航应该就能正常工作了:点击首页的图标或者列表项可以顺利跳转到Shopping页面,点击Back按钮也能正常返回首页,不会再出现持续加载的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 07:29:10