【问题标题】:undefined is not an object (evaluating 'navigation.reset')undefined 不是对象(评估“navigation.reset”)
【发布时间】:2026-01-05 13:25:01
【问题描述】:

我认为我的代码是正确的,但结果是它给了我未定义,但是当我单击一个按钮转到“列表”时;有用!只是我不能从 TouchableOpacity onPress 做到这一点。这是我的代码

import { StyleSheet, Text, View,TouchableOpacity } from 'react-native'
import {useSelector, useDispatch} from 'react-redux'
import {fetchDogsAsync} from '../store/action/index'

const DogsList = ({navigation}) => {
    const dispatch = useDispatch()
    const {dogs,isLoading} = useSelector(state => state)
    useEffect(() => {
        dispatch(fetchDogsAsync())
    }, [dispatch])
    console.log(dogs,isLoading);
    return (
        <View>
        {
                isLoading ? <Text>Loading...</Text> : (dogs?.message).map((dog,idx)=> {
                    return (
                        <TouchableOpacity key={dog} onPress={() => navigation.reset({
                            index: 0,
                            routes: [{name: 'List', params: {breed: dog}}],
                          })}><Text>{dog}</Text></TouchableOpacity>
                    )

                })
            }
    </View>
    )
}

export default DogsList

const styles = StyleSheet.create({})

【问题讨论】:

    标签: javascript reactjs react-native redux react-redux


    【解决方案1】:
    <Navigator.Screen
         name="initial"
         component={ListScreen}
         options={{ title: "", headerShown: false }}
    />
    

    只有 Screen 标签中使用的组件才会收到导航属性。这里 ListScreen 将收到导航道具。但是 ListScreen 的子组件不会收到导航道具。但是您可以在组件树中的任何位置使用 useNavigation 挂钩,这将为您提供导航对象。您可以在他们的官方文档中了解更多信息。

    https://reactnavigation.org/docs/use-navigation/

    【讨论】:

      最近更新 更多