我正在尝试使用 AWS Amplify 的 DataStore 和来自 @react-navigation/native 库的 useRoute() 钩子导入视频 ID。
到目前为止一切正常,但我不断收到此错误:
Property 'id' does not exist on type 'object'.
我尝试在 google 上搜索,发现了一些类似的东西,但没有一种解决方案适用于我的应用。
我的代码:
const [video, setVideo] = useState<Video | null >(null)
const [comments, setComments] = useState<Comment[]>([])
const route = useRoute()
const videoId = route.params?.id
useEffect(() => {
DataStore.query(Video, videoId).then(setVideo)
}, [videoId])
答案 0 :(得分:0)
react-navigation
的 useRoute
需要提供显式类型参数才能键入返回的结果。
首先,您需要在某处定义应用程序路由和相应路由属性的完整列表:
type AppRouteParamList = {
Home: undefined // undefined means Home route doesn't have route parameters
Video: { id: string } | undefined
}
然后在你的组件中,你必须用正确的类型参数注释 useRoute
:
import { AppRouteParamList } from './routes.ts'
import { useRoute, RouteProp } from '@react-navigation/native'
const route = useRoute<RouteProp<AppRouteParamList, 'Video'>>()
const videoId = route.params?.id