react-react+redux返回的值嵌套太深后拿不到了?

发布于 2022-09-04 00:16:45 字数 4499 浏览 24 评论 0

通过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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

风月客 2022-09-11 00:16:45

解决了,,,,,是因为react初始的时候是没有拿到数据的,返回的是undefined,所有取不到menu的值,报错导致react不会执行后面的代码。所以解决方法是去判断每次拿到的数据是否有值,没有的话返回空div,有的话返回页面。

真心是个坑,耽误了半天时间醉醉醉的了。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文