Я создаю приложение чата, используя react-native-gifted-chat
и socket.io
.Я сталкиваюсь с проблемой, когда пользователь печатает какое-то сообщение внутри Composer
из GiftedChat
.
. В случае, если текстовый ввод Composer не пуст, то есть пользователь печатает какое-то сообщение, когда к нему добавляется новое сообщение.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
}}
/>
);
}
}
Текст внутри компоновщика, который еще не отправлен, не следует удалять из компоновщика.Однако, это очищается, когда новое сообщение добавляется в одаренный чат.
Я использую следующую конфигурацию:
Nodejs version: 8.12.0
React version: 16.8.3
React Native version: 0.59.5
react-native-gifted-chat version: 0.8.0
Platform: Android