react原生giftedchat无法编辑消息文本

问题描述 投票:0回答:3

我想编辑一条消息,但只有当我更改此消息_id 时它才会更新。有人可以告诉我如何做吗,这是我的代码:

const onSend = useCallback((messagesToSend = []) => {
        if(editMessage != null){
            setEditMessage()
            const m = messagesToSend[0]
            const newMessages = [...messages]
            const index = newMessages.findIndex(mes => mes._id === editMessage._id);
            console.log('index: ', index)
            if(index > -1){
                newMessages[index].text = m.text // => ***i only edit the text***
                // newMessages[index]._id = uuid.v4() => ***this working if changed _id***
                console.log('newMessages', newMessages[index]) //  => ***new message changed it's text but the bubble not change when re-render***
                LayoutAnimation.configureNext(LayoutAnimation.Presets.easeInEaseOut)
                setMessage(newMessages)
            }
        }else{
            setReplyMessage()
            appendMessage(messagesToSend)
        }
    })

react-native-gifted-chat
3个回答
1
投票

看起来您正在使用

useCallback
而不使用依赖数组。这意味着您依赖的任何依赖项都将被记忆,并且在您运行该函数时不会更新。

您应该将

messages
editMessage
,也许还有
setMessage
appendMessage
添加到依赖项数组中。像这样:

const onSend = useCallback(
(messageToSend = []) => etc,
[messages, editMessage, setMessage, appendMessage]);

这是我要尝试的第一件事


0
投票

好的,我发现问题了,在 MessageText 中,函数 componentShouldUpdate 需要稍微修改一下


0
投票

你能告诉我你是如何解决这个问题的吗?我正在努力解决同样的问题..如果我按下它,则需要更新气泡..

© www.soinside.com 2019 - 2024. All rights reserved.