reactjs - 为什么读取对象的属性会使对象未定义?
问题描述
下面是我的代码,它从 Redux 获取数据:
function ProductsDetail(props){
const dispatch = useDispatch();
useEffect( () => {
const fetch = async () => {
const {data} = await axios.get("/api/products/" + props.match.params.id);
dispatch(
{
type: "product_detail_success",
payload: data
})
}
fetch();
return () => {};
}, [])
const {product} = useSelector((state) => {
return state.productDetails
});
console.log(product)
//console.log(product.image)
return (
<div>
</div>
)
}
但是,如果我不注释掉以下console.log(product.image)
行,Uncaught TypeError: Cannot read property 'image' of undefined
就会出现错误。
image
只是product
object 的一个属性,为什么在控制台上打印它会使product
object 未定义?
提前感谢!
解决方案
在初始渲染product
中未定义,因此:
console.log(product) // will show nothing
//console.log(product.image)
当它重新渲染时:
`console.log(product)` // This show what you see in you log
所以试试下面的代码:
console.log(product) // will show nothing
console.log(product?.image) // Add ? to make sure only get image when product defined
推荐阅读
- google-apps-script - 如何根据当前选定的单元格隐藏行?
- javascript - 按值合并 2 个 JS 对象数组
- c# - 如何使用复杂查询 EF Core 修复错误
- node.js - 无法创建路径较长的 REST API
- javascript - 即使在定义函数之后,也会发生错误并说函数未定义
- ruby - 如何将散列数组转换为单个散列并计算重复项?
- php - 通过插件更改 wordpress URL 格式
- python - python db2 ibm_db 简单选择查询不会执行
- amazon-web-services - 发出 OPTIONS 请求时出现 AWS API 网关错误
- c++ - 如何区分空结构和一个字符?