Reactjs 如何在react native messaging应用程序中的群聊消息中显示发件人姓名,并且在他发送下一条消息时不显示其姓名?

Reactjs 如何在react native messaging应用程序中的群聊消息中显示发件人姓名,并且在他发送下一条消息时不显示其姓名?,reactjs,react-native,react-native-android,react-native-ios,Reactjs,React Native,React Native Android,React Native Ios,我在react native中有一个消息应用程序,它包含组消息。现在,我想在特定邮件上显示发件人的姓名。我已经在邮件上显示了发件人的姓名。但我想做的是,当他在一行中有多条消息时,只在第一条消息上显示他的名字 这是屏幕截图 看,在第一张图片中,所有信息上都显示有名字 现在想这样做,所以只在第一条消息中显示他的名字 在我过去常画的平面图中,名字是这样的 `<Text numberOfLines={1} style={{ flexD

我在react native中有一个消息应用程序,它包含组消息。现在,我想在特定邮件上显示发件人的姓名。我已经在邮件上显示了发件人的姓名。但我想做的是,当他在一行中有多条消息时,只在第一条消息上显示他的名字

这是屏幕截图

看,在第一张图片中,所有信息上都显示有名字

现在想这样做,所以只在第一条消息中显示他的名字

在我过去常画的平面图中,名字是这样的

`<Text numberOfLines={1} style={{
                              flexDirection: 'row',alignItems:'center',textAlignVertical:'center',
                              flexWrap: 'wrap', color: 'rgb(44,88,157)', fontWeight: '600',
                              paddingLeft: 0,
                              justifyContent: 'flex-start',
                            }}
                            >{item.sender_user_id.nick_name
                              }</Text>`
`{item.sender\u user\u id.nick\u name
}`

制作一个具有布尔属性的
消息组件
showName

renderMessage(showName = true, name, body) {
    return <Message showName={showName} name={name} body={body}/>
}

在最后几条消息中显示姓名:

  • 如果没有下一条消息,请显示名称
  • 如果下一封邮件的发件人不同,请显示姓名
  • 范例


    制作一个具有布尔属性的
    消息
    组件
    showName

    renderMessage(showName = true, name, body) {
        return <Message showName={showName} name={name} body={body}/>
    }
    

    在最后几条消息中显示姓名:

  • 如果没有下一条消息,请显示名称
  • 如果下一封邮件的发件人不同,请显示姓名
  • 范例


    你能分享你已经尝试过的吗?你能分享你已经尝试过的吗。成功了。我所做的只是稍微更改了您的代码。第一条消息上会显示名称。但我想在最后一条消息中显示它。我修改了答案以包含这两种情况。非常感谢。不知道为什么,但我失去了我的洞天这个解决方案。再次感谢你,伙计。消息[i+1]。name最后返回未定义的,所以用if条件包装它==未定义,谢谢。成功了。我所做的只是稍微更改了您的代码。第一条消息上会显示名称。但我想在最后一条消息中显示它。我修改了答案以包含这两种情况。非常感谢。不知道为什么,但我失去了我的洞天这个解决方案。再次感谢你,伙计。消息[i+1]。name最后返回未定义的,所以用if条件包装它==未定义。
    renderMessages(messages) {
        const lastIndex = messages.length - 1;
        messages.map((message, i) => {
            let showName = false;
            if(i === lastIndex) {
                showName = true;
            }
            else {
                const nextName = messages[i+1].name;
                if(message.name !== nextName) {
                    showName = true;
                }
            }
            renderMessage(showName, message.name, message.body)
        });
    }