やりたいこと
switchでon/offを切り替えた時にonChange関数が呼ばれます。
データの保存に成功した時にstateの値を書き変えて画面上でswitchをON/OFF切り替えたいのですが
stateの値は書き換わっているのに画面上ではswitchは切り替わっていなく、リロードをすれば切り替わっています。
⑴の関数にしてみたところ画面上でもON/OFF切り替えることはできますが⑵だとリロードしないとON/OFFが切り替わりません。
どうしてなのでしょうか?
⑴ // switch切り替わる const onChange = () => { setState({ ...state, switch: !state.switch}); }
⑵ // これだとswitchが切り替わらない const Required = window.gon.switch; interface IState { switch: boolean; message: string; } const index:FC = () => { const [state, setState] = useState<IState>({ switch: Required, message: '' }); const onChange = () => { Axios.post('/user', toJsonBody({ param: !state.switch, })) .then(() => { setState({ ...state, switch: !state.switch}); succsessMessage(SAVEMESSSAGE) }) .catch(() => handleError(ERROR)); } <Switch checked={state.switch} onChange={onChange} /> ``` 追記 switchコンポーネントはマテリアルUIを使っています。