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