gpt4 book ai didi

javascript - 聊天 react 中的消息顺序

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:40:16 26 4
gpt4 key购买 nike

一段时间后我会回去编程。我写过一次 chatApp。现在我想在那里改变一些东西。目前,聊天中的新消息显示在消息列表的顶部。我想把它放在底部。我想我必须对状态更新做些什么。请告诉我它在哪里。

class App extends Component {
constructor(props) {
super(props);
this.state = {users: [], messages: [], text: '', name: ''};
}

componentDidMount() {
socket.on('message', message => this.messageReceive(message));
socket.on('update', ({users}) => this.chatUpdate(users));
}

messageReceive(message) {
const messages = [message, ...this.state.messages];
this.setState({messages});
}

chatUpdate(users) {
this.setState({users});
}

handleMessageSubmit(message) {
const messages = [message, ...this.state.messages];
this.setState({messages});
socket.emit('message', message);
}

handleUserSubmit(name) {
this.setState({name});
socket.emit('join', name);
}

render() {
return this.state.name !== '' ? (
this.renderLayout()
) : this.renderUserForm()
}

renderLayout() {
return (
<div className={styles.App}>
<div className={styles.AppHeader}>
<div className={styles.AppTitle}>
ChatApp
</div>
<div className={styles.AppRoom}>
App room
</div>
</div>
<div className={styles.AppBody}>
<UsersList
users={this.state.users}
/>
<div className={styles.MessageWrapper}>
<MessageList
messages={this.state.messages}
/>
<MessageForm
onMessageSubmit={message => this.handleMessageSubmit(message)}
name={this.state.name}
/>
</div>
</div>
</div>
);

最佳答案

只需更改此处理程序即可。

messageReceive(message) {
const messages = [message, ...this.state.messages];
this.setState({messages});
}

为了将新消息附加到底部。

messageReceive(message) {
const messages = [...this.state.messages, message];
this.setState({messages});
}

关于javascript - 聊天 react 中的消息顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54444745/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com