useOptimistic
code:ts
例
code:ts
function ChangeName({currentName, onUpdateName}) {
const submitAction = async formData => {
const newName = formData.get("name");
setOptimisticName(newName); // 楽観的に更新
const updatedName = await updateName(newName);
onUpdateName(updatedName);
};
return (
<form action={submitAction}>
<p>Your name is: {optimisticName}</p> //
<p>
<label>Change Name:</label>
<input
type="text"
name="name"
disabled={currentName !== optimisticName} //
/>
</p>
</form>
);
}
setOptimisticNameで楽観的に更新する
更新終了かエラー発生で、直ちにcurrentNameに戻る
楽観的更新がされている気がしないmrsekut.icon
code:ts
const Counter: React.FC = () => {
addOptimistic(1);
await sleep(1000)
return currentCount + 1;
}, 0);
return currentCount + optimisticValue;
});
return (
<div>
<div>{displayCount}</div>
<button
type="button"
onClick={increment}
disabled={isPending}
Increment
</button>
</div>
);
}
docs内のform actionを使った例だと機能した