まとめて保存
問題
iPadで書いたものをPCで見ている場合に、複数パスを選択して移動すると1パスずつ移動と再描画が行われる
原因
useEffectでstate.itemsの変化をトリガーとしてsaveToServerしていた。
対処
useEffectでフラグが立ってなければsetTimeout、フラグを立てる
フラグが立っていれば何もせずにスルー
setTimeoutがfireしたタイミングでsaveToServer
code:ts
let toSave = false;
useEffect(() => {
if (toSave) {
// do nothing
} else {
toSave = true;
setTimeout(() => {
toSave = false;
saveToServer(isReadOnly, state, mapname)
}, 100)
}