react-react+redux返回的值嵌套太深后拿不到了?
通过redux异步拿到了值后,返回给了connect的组件,在props中也能打印出来,但是这个数据嵌套
太深,当我一步一步去拿最终的menu数据时,每次都是最后一步报错,直接页面就不渲染了。
返回的props数据是这样的:
但是我这样定义值:
const menus = this.props.menus[0];
//Object {menu: Array[7], number: Array[4]},能够打印数据
const menus = this.props.menus[0].menu;
//报错:Uncaught TypeError: Cannot read property 'menu' of undefined
//并且页面加载不出来了
附带完整的出错组件:
class Category extends Component {
constructor(props) {
super(props)
}
render() {
let menus = this.props.menus[0].menu;
console.log(menus);
return (
<div className="container pos-rel mt">
<div className="cate-container">
<div className="category">
<div className="category-box">
<ul className="ca-ul">
{
[].map((item, index) => {
const containerClass = item.content.length > 8 ? 'citem-detail citem-col-2' : 'citem-detail citem-col-1';
return (
<li className="ca-li" key={index}>
<a className="cate-a" href="">{item.item}</a>
<div className={containerClass}>
<ul className="citem-children citem-chi-col">
{
item.content.map((subMenu, index) => {
if(index >= 8) {
return;
}
return (
<li className="citem-chi-list" key={index}>
<a href="#" className="choose">{subMenu}</a>
</li>
)
})
}
</ul>
<ul className="citem-children citem-chi-col">
{
item.content.map((subMenu, index) => {
if(index >= 8 && index < 16) {
return (
<li className="citem-chi-list" key={index}>
<a href="#" className="choose">{subMenu}</a>
</li>
)
}
})
}
</ul>
</div>
</li>
)
})
}
</ul>
</div>
</div>
</div>
</div>
);
}
}
const mapStateToProps = (state) => {
// console.log(state);
return state;
}
// category.propTypes = {};
// category.defaultProps = {};
let wrapedCategory = connect(mapStateToProps)(Category);
export default wrapedCategory;
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
解决了,,,,,是因为react初始的时候是没有拿到数据的,返回的是undefined,所有取不到menu的值,报错导致react不会执行后面的代码。所以解决方法是去判断每次拿到的数据是否有值,没有的话返回空div,有的话返回页面。
真心是个坑,耽误了半天时间醉醉醉的了。