Recoilのatom
一つのglobalなstate任意のComponentsから読み書き可能動的に定義したい場合は[RecoilのatomFamily]を使うatomを更新すると、そのatomを使っている全てのComponentsが再renderingされる[docs https://recoiljs.org/docs/basic-tutorial/atoms]
const goForward = useRecoilTransaction_UNSTABLE(({get, set}) => (distance) => {
const heading = get(headingState);
const position = get(positionState);
set(positionState, {
x: position.x + cos(heading) * distance,
y: position.y + sin(heading) * distance,
});
});