Reactjs 无法访问redux对象数组属性
我对react/redux相当陌生,我有一个无法理解的意外问题Reactjs 无法访问redux对象数组属性,reactjs,redux,react-redux,Reactjs,Redux,React Redux,我对react/redux相当陌生,我有一个无法理解的意外问题 当我从redux检索到一篇特定的文章时,当我加载正确的页面时,就会触发该操作。我可以在redux开发工具中看到文章在状态下正确加载。文章一切正常 减速器(简化): 行动: export const getTargetArticle = slug => async dispatch => { try { const res = await axios.get("api/article/" + slug);
当我从redux检索到一篇特定的文章时,当我加载正确的页面时,就会触发该操作。我可以在redux开发工具中看到文章在
状态下正确加载。文章一切正常
减速器(简化):
行动:
export const getTargetArticle = slug => async dispatch => {
try {
const res = await axios.get("api/article/" + slug);
dispatch({
type: GET_TARGET_ARTICLE,
payload: res.data
});
} catch (err) {
...
}
};
以下是article对象应该具备的功能:
article: {
title:"",
content: "",
comments:[],
}
问题:正如我所说,声明。文章
已正确填充,我可以访问标题
和内容
。但是当我试图访问注释时,我得到一个讨厌的无法读取null属性“comments”。知道为什么吗?
以下是我如何显示它(如果有帮助):
const Article = ({ getTargetArticle, article: { article, loading }, match }) => {
useEffect(() => {
getTargetArticle(match.params.slug);
}, []);
let commentsList = article.comments.map((comment, index) => (
<Fragment>{comment.title}</Fragment>
));
return (
<Fragment>
{article && article.title}
{commentsList}
</Fragment>
);
};
const-Article=({gettargerticle,Article:{Article,loading},match})=>{
useffect(()=>{
GetTagerAticle(匹配参数slug);
}, []);
let commentsList=article.comments.map((注释,索引)=>(
{comment.title}
));
返回(
{article&&article.title}
{commentsList}
);
};
非常感谢在初始渲染时,注释只有空数组,因此您无法对其进行迭代,并且注释中没有标题。因此,comment.title导致了这个问题。要解决此问题,请在使用map之前进行检查:
let commentsList = article.comments.length &&
article.comments.map((comment, index) => (
<Fragment>{comment.title}</Fragment>
));
let commentsList=article.comments.length&&
article.comments.map((评论,索引)=>(
{comment.title}
));
您还可以检查标题:
<Fragment>{comment.title && comment.title || ''}</Fragment>
{comment.title&&comment.title | |''''}
非常感谢,就是这样!(只需检查文章是否存在,而不是article.comments.length)
<Fragment>{comment.title && comment.title || ''}</Fragment>