[英]How to print out several messages but only one username for a chat app
I want to create a messager app that looks exactly like messaging using an iphone.我想创建一个看起来与使用 iphone 进行消息传递完全相同的消息应用程序。 By that I mean that I want the username to be shown each time a new person writes something but if the person keeps writing, the username will not repeat itself, it will only create a new messager bubble (just like it looks when messaging using an iphone etc).我的意思是我希望每次新人写东西时都显示用户名,但如果这个人继续写,用户名不会重复,它只会创建一个新的消息气泡(就像使用苹果手机等)。 I have tried to use map to acheive this but its not working.我曾尝试使用 map 来实现这一点,但它不起作用。 Does anyone know how I can write this?有谁知道我怎么写这个?
This is my code so far.到目前为止,这是我的代码。 Does anyone know how I should write it instead?有谁知道我应该怎么写?
import React, { useState, useEffect } from 'react'
import axios from 'axios'
export const GetMessages = () => {
const [userMessage, setUserMessage] = useState([]);
const user = window.localStorage.getItem('Name')
const fetchResponse = async () => {
try {
const getResponse = await axios.get(
'http://167.172.108.61/?storage=camilla_lofroth'
)
console.log(getResponse.data)
setUserMessage(getResponse.data)
} catch (error) {
alert('Error')
}
return[]
}
useEffect(() => {
fetchResponse()
}, [])
console.log(userMessage)
return (
<div>
<div>
<p>{user}</p>
</div>
{userMessage.map(message => (
<p>
{message.user !== null && typeof message.user === 'object'? message.user.mess: message.user }
{userMessage.map(message => (
<p>
{message.message !== null && typeof message.message === 'object'? message.message.mess: message.message}
</p>
))}
</p>
))}
</div>
)
}
I actually did something similar to this not too long ago (smaller gaps for same user messages): http://astral-chat-app.herokuapp.com/实际上我不久前做了类似的事情(相同用户消息的间隔更小): http://astral-chat-app.herokuapp.com/
Edit: Based on your state, to render a username once per set of messages, your return should be:编辑:根据您的 state,要为每组消息呈现一次用户名,您的回报应该是:
return (
<div>
{userMessage.map((message, index) => {
return(
<div key={Math.random() * 1000000000}>
{index > 0 && message.user !== userMessage[index-1].user
&& <h3>{message.user ? message.user : "Unknown"}</h3>
}
<p> {message.message} </p>
</div>
)
})}
</div>
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.