• 問題
    • 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]); 

pRegroup-done-2019