ダイアログは「開いてる/閉じてる」という状態を持ったコンポーネントである。 通常、メニューなどの「ダイアログとは親子関係にないコンポーネント」から状態が更新される。 これをどうやるのがいいか。
案1:
案2:
const FooDialog = () => {
const [open, setOpen] = useState(false);
...
}
export let openFooDialog: () => void;
const FooDialog = () => {
const [open, setOpen] = useState(false);
openFooDialog = () => {
setOpen(true);
}
...
}
案3:
export const FooDialog = () => {
const [dialog, setDialog] = useGlobal("dialog");
const open = dialog === "Foo";
...
}
const INITIAL_GLOBAL_STATE = {
...
dialog: null as "Foo" | null,
};
export const openFooDialog = () => {
setGlobal({ dialog: "Foo" });
};
openFooDialogに相当するコードはメニューの側に置かれていたが、その後この名前に変えてFooDialog.tsxの中に移動した何が最良なのかまだピンときていないが、方針変更があったこのタイミングで記録しておくことが有益だと思って記録した