关于判断发送最后一条信息的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>


整体就这样~

1
0

nc1199

提问者

2019-09-18

最后 修改方案很简单,即 将const targetId = v[0].from === userid ? v[0].to : v[0].from 改为:

const targetId = this.getLast(v).from

1
0

nc1199

提问者

2019-09-18

十分不理解,为什么这里如此大的逻辑性BUG竟然没人提问。 emmmmmm

0
0

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内的人名和头像!

0
0

Redux+React Router+Node.js全栈开发

全网唯一的React 16+Redux+React Router4实战课程,学到手是你的真本领!

1822 学习 · 750 问题

查看课程