我正在使用react-native-gifted-chat
和socket.io
构建聊天应用程序。用户在Composer
的{{1}}内键入一些消息时,我遇到了一个问题。
如果Composer文本输入不为空,即用户正在键入某些消息,则使用GiftedChat
将新消息附加到GiftedChat
消息(可能是其他用户的消息)后,作曲家被清除。
我在下面的代码片段中使用GiftedChat.append(previousState.messages, messages)
复制情况(而不是使用setTimeout()
)以最小化代码:
socket.io
作曲家内部尚未发送的文本不应从作曲家中删除。但是,当有新消息添加到有条件的聊天中时,该消息将被清除。
我正在使用以下配置:
import React from 'react';
import { GiftedChat } from 'react-native-gifted-chat';
export default class Chat extends React.Component {
state = {
messages: []
};
componentDidMount() {
this.setState({
messages: [
{
_id: 1,
text: 'Hello developer',
createdAt: new Date(),
user: {
_id: 2,
name: 'React Native',
avatar: 'https://placeimg.com/140/140/any'
}
}
]
});
setTimeout(() => {
const message = {
_id: 2,
text: 'Hello World!',
createdAt: new Date(),
user: {
_id: 2,
name: 'React Native',
avatar: 'https://placeimg.com/140/140/any'
}
};
this.setState(previousState => ({
messages: GiftedChat.append(previousState.messages, message)
}));
}, 10000);
}
onSend(messages = []) {
this.setState(previousState => ({
messages: GiftedChat.append(previousState.messages, messages)
}));
}
render() {
return (
<GiftedChat
messages={this.state.messages}
onSend={messages => this.onSend(messages)}
user={{
_id: 1
}}
/>
);
}
}