关于判断发送最后一条信息的name和avatar值得选择。
来源:11-2 聊天列表展示

nc1199
2019-09-18
我觉得既然是显示最后发出的那条信息,那么发出这条信息的内容肯定是视频中getLast获取到的那条信息,但是对应发出该条信息的人名和头像 也应该是取from字段去找对应的那个人的人名和头像。所以我实在不明白为什么要用userid去进行一次对比?明明都已经很明确的知道最后一条信息发出人的ID,就是from字段了。
4回答
-
nc1199
提问者
2019-09-18
看完12-1章节后,特来此说明一下,老师的:const targetId = v[0].from === userid ? v[0].to : v[0].from
这行判断是为了让列表的跳转即:Item中的onClick的跳转能到达对应的/chat/:userid页面,所以按照我说的改了老师的语句之后,还是需要加上老师这条判断,即:
const targetId = this.getLast(v).from
const goId = v[0].from === userid ? v[0].to : v[0].from
thumb={require(`../img/${userinfo[targetId].avatar}.png`)}
onClick={()=>{
this.props.history.push(`/chat/${goId}`)
}}
<Brief>{userinfo[targetId].name}</Brief>
整体就这样~
10 -
nc1199
提问者
2019-09-18
最后 修改方案很简单,即 将const targetId = v[0].from === userid ? v[0].to : v[0].from 改为:
const targetId = this.getLast(v).from
10 -
nc1199
提问者
2019-09-18
十分不理解,为什么这里如此大的逻辑性BUG竟然没人提问。 emmmmmm
00 -
nc1199
提问者
2019-09-18
视频中最后,老师用mike向imooc发出信息,显示了正确的人名和头像,其实本身就有问题,因为老师用的是v[0],视频中第一条消息刚好是imooc发送给mike的消息,但是显示的却是mike的人名和头像。
如果再用imooc回复mike之后,再返回msg页面就会出现问题,因为这时候本应该显示最后imooc的人名和头像。但因为此时targetId = v.from==userid ? v,to : v.from,这条判断的关系,导致需要显示v.to即mike的人名和头像,所以我总结:targetId = v.from==userid ? v,to : v.from,这条判断语句完全错误,应该直接用from对应的users内的人名和头像!
00
Redux+React Router+Node.js全栈开发
1822 学习 · 750 问题
相似问题