Ввод Composer очищается при добавлении нового сообщения в сообщения GiftedChat. - PullRequest
0 голосов
/ 07 мая 2019

Я создаю приложение чата, используя 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
...