当在GiftedChat消息中附加新消息时,将清除Composer输入

时间:2019-05-07 10:45:08

标签: react-native react-native-gifted-chat

我正在使用react-native-gifted-chatsocket.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
                }}
            />
        );
    }
}

0 个答案:

没有答案