1.实现左侧导航栏的二次路由具有拉伸效果。试了一个上午,只能感叹承认antd封装的后台管理系统是完美的。MaUI虽然也完成了一些相关的搭配,但是其封装效果并不完美。它利用的单独组件和的onclick事件来控制某个状态的改变,操作中的in属性改变来完成折叠和拉伸的效果,但是坑的是,如果你想用数组来渲染整个左边的菜单栏,你会发现一个问题。某个列表的点击事件会展开所有的列表,因为在渲染列表的时候,所有的的in属性都是同一个state。下面是我只点击商品链接的效果:这一点都不符合我的预期,虽然你可以给每个上面的创建一个单独的onClick事件,但是这样很麻烦,而且无论是代码的复用性还是后期数组的渲染都很难管理。(可能有好办法,但以我现在的水平,暂时做不到,以后有机会再改这篇文章)。所以果断采用antd的组件。由于antd将折叠和打开的效果封装在一个单独的组件中,各个组件之间互不影响,清爽多了。接下来,去路由表中设置二级路由。创建如下文件夹,并创建对应的.jsx文件,对应我们后面需要用到的各个部分。这里再强调一下:这些路由组件是dashboard页面的子路由,所以我们可以在路由表的组件的路由下创建子路由。同样的道理,如果要使用,必须先导入:设置下面的子路由,别忘了children对象的属性是一个数组。然后去对应的地方添加标签,这里我把key换成了路由路径,这个不是必须的。(图表页也是一样,如果图片太大,就不收录了)2.列表渲染优化虽然现在可以看到页面的效果,但是这样的列表是死的,不方便复用。我们需要像之前的todolist案例一样通过数组来渲染它。首先要做的是观察这个列表的结构,思考数组中需要有哪些值。在Config文件夹下创建一个siderBarList文件夹。我知道需要渲染的变量就是这些,而我的- 组件的key和组件的路径是一样的,所以设置一个关键字key就可以了,icon是用来存放icon的信息。让我们先把折线图放一边,先完成这部分。回到侧边栏组件,不用想,直接导入刚才写的变量即可。现在你需要写一个函数来自动选择这个数组。1、逐条分析,首先需要判断渲染对象是否有二级路由,如果没有,直接渲染即可。这和常规的列表渲染没什么区别,没有二级路由的首页或者角色管理都可??以在下面渲染。2.如果有二级路由,我们需要考虑二次渲染。在这里,函数用于递归调用自身。其实这相当于重写了这行代码。需要仔细理解。看页面效果,并没有报错