关于ColumnDetail的一些疑问
来源:10-1 添加编辑和删除区域

Guguuuu
2022-08-03
老师我说一些我的一些疑问。(目前我的代码进度是10-1)
首先就是我们在Home里展现了ColumnList,然后我们点击"进入专栏",就会拿到对应的专栏的_id 跳转到对应的路由组件ColumnDetail,由于是通过params参数来保存这个专栏的_id,在ColumnDetail中通过route.params.id拿到了并保存在currentId中。
然后呢,路由的切换是会伴随着组件的挂载和卸载嘛,这个ColumnDetail组件一挂载触发onMounted,就会调用dispatch,将我目前这个专栏的id呢发送给store中的…
我试着输出一下他们,想看看他们长什么样。
三、
期间,第一个不明白的地方在于 Mutations中的
’
fetchColumn(state, rawData) {
state.columns = [rawData.data]
},
这个[rawData.data]是不是 长 这样子 —> [ { 保存的是上面图片绿色框的专栏详情对象 } ]
四、
然后第二个疑问就是,因为我是从Home中点击进入专栏的
刚刚也说了,Home一挂载,就会去发送异步请求,拿到所有专栏信息,保存在columns中
就是下面这个图片
您看,不管是Home还是这个ColumnDetail发送请求之后拿到数据,都是直接赋值给state中的columns。此时按照顺序(点击进入专栏之后),我能不能认为
columns已经变成这个样子 ====> [{上面图片绿色框的专栏详情对象}]
是否已经把原本的columns的值(所有专栏信息)覆盖了
然后最大的疑问来了,在ColumnDetail中,有这样一段代码
store.getters.getColumnById(currentId) as ColumnProps | undefined
把对应专栏的id传给getter这个方法,而此时state中的columns里面本身就只剩下一条数据了,因为刚刚被覆盖了,长这样子 [{上面图片绿色框的专栏详情对象}]
我们通过这个getColumnById去遍历,是不是有点多此一举。。
emm,我的意思是,本来state.columns就剩下一条 对应的专栏的数据
为啥还要再通过getter这个方法遍历一次
1回答
-
同学你好
你的问题描述太详细了 辛苦你写这么多内容了,这里面好像就有两个问题,我来回答一下
1 是绿色的对应的数据
2 在目前的这个情况下,这个专栏详情页是有点多此一举,
2-1 但是我认为这个 getter 设计之初,初衷不仅仅是为这一个页面服务的,有可能所有页面都会调用~ 所以它在别的页面使用的使用 columns 的数据有可能不是这样的,所以还是有价值的。
2-2 在后面我们优化数据结构以后,会不使用这样的方式,(数组中不会仅仅剩一项),那个时候就不会有这个问题了。
112022-08-03
相似问题