首页 > 解决方案 > undefined 不是对象(评估“navigation.reset”)

问题描述

我在想我的代码是正确的,但事实证明它给了我未定义,但是当我单击一个按钮转到“列表”时;有用!只是我不能从 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({})

标签: javascriptreactjsreact-nativereduxreact-redux

解决方案


<Navigator.Screen
     name="initial"
     component={ListScreen}
     options={{ title: "", headerShown: false }}
/>

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

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


推荐阅读