diff --git a/src/content/reference/react/useOptimistic.md b/src/content/reference/react/useOptimistic.md index d191bbb551c..04ecf7b7b2a 100644 --- a/src/content/reference/react/useOptimistic.md +++ b/src/content/reference/react/useOptimistic.md @@ -72,16 +72,21 @@ import { deliverMessage } from "./actions.js"; function Thread({ messages, sendMessage }) { const formRef = useRef(); async function formAction(formData) { - addOptimisticMessage(formData.get("message")); + const message = { + key: new Date().getTime(), + text: formData.get("message") + }; + addOptimisticMessage(message); formRef.current.reset(); - await sendMessage(formData); + await sendMessage(message); } const [optimisticMessages, addOptimisticMessage] = useOptimistic( messages, (state, newMessage) => [ - ...state, + //properly merge state by removing the duplicated message + ...state.filter(msg => msg.key !== newMessage.key), { - text: newMessage, + ...newMessage, sending: true } ] @@ -89,8 +94,8 @@ function Thread({ messages, sendMessage }) { return ( <> - {optimisticMessages.map((message, index) => ( -