TypeError: Cannot read property 'touristRoutes' of undefined
来源:9-7 【中间件】使用redux-thunk中间价实现异步action

慕函数4298367
2021-03-03
export const HomePage:React.FC=()=>{
const loading=useSelector(state=>state.recommendProduct.loading)
const productList =useSelector(state=>state.recommendProduct.productList)
const dispatch=useDispatch()
useEffect(()=>{
try {
dispatch(fetchRecommendProductStartActionCreator())
const feacthdate=async()=>{
const {data}=await axios.get(“http://123.56.149.216:8080/api/productCollections",{headers:{“x-icode”:"472DA4444926CAB2”}})
dispatch(fetchRecommendProductSuccessActionCreator(data))
}
feacthdate()
} catch (e) {
dispatch(fetchRecommendProductFailActionCreator(e.message))
}
},[] )
console.log(“productList”,productList)
console.log(“productList”,productList[0].touristRoutes)
老师用useSelector获取store数据后 console.log(“productList”,productList) 是可以取到数据的,但是访问数组下的某个字段是报TypeError: Cannot read property ‘touristRoutes’ of undefined的错误,我需要在哪里去定义productList的类型呢?
1回答
-
hello 你好,
console.log(“productList”,productList) console.log(“productList”,productList[0].touristRoutes)
直接放在组件中是组件中是读不到数据的,因为HomePage在启动的时候可能还没有取得productList的数据,那么这个时候访问productList[0].touristRoutes自然会报错,因为productList还不存在。
想正常读取productList数据,我们必须在副作用函数中进行。也就是应该放在useEffect 的try中feacthdate()函数调用的后面。
022021-03-05
相似问题