react native giftedchat不能编辑消息文本



我想编辑一条消息,但它只在我更改此消息_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)
}
})

看起来您正在使用没有依赖数组的useCallback。这意味着您所依赖的任何依赖项都将被记忆,并且在运行函数时不会更新。

您应该添加messages,editMessage,也许setMessageappendMessage,到依赖数组。像这样:

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

这是我要做的第一件事

ok,我发现了问题,在MessageText函数componentShouldUpdate需要修改一个位

最新更新