やりたいこと
データを保存するボタン(保存ボタン)をデータ登録後に非活性になるようにしたい。
現在は初期値とstateを比べてstateと初期値が同じでないときに保存とキャンセルボタンが活性になるようになっているのですが、
保存ボタンを押してデータ登録後にキャンセルボタンを押すとデータを登録する前の値に戻ってしまいます。
なのでデータ登録後はボタンを非活性にしたいのですがどのようにしたらよいでしょうか?
const initialState = { inputText: TextLength, upperCase: Uppercase, lowerCase: lowerCase, numbers numbers, } interface IState { inputText: number; upperCase: boolean; lowerCase: boolean; } const index:FC = () => { const [state, setState] = useState<IState>(initialState); const changeState = (key: keyof IState) => { setState({ ...state, ...{ [key]: !state[key] } }); }; const onCancelSubmit = () => { setState(initialState); }; const onSubmit = () => { Axios.post('/user', JsonBody({ text_length: state.inputText, uppercase_required: state.upperCase, downcase_required: state.lowerCase, })) .then(() => { succsessMessage(SAVEMESSSAGE); }) .catch(() => handleError(ERRORMESSAGE)); } <Input value={state.inputText} onChange={handleInputChange} /> <Switch checked={upperState} onChange={() => changeState(state.upperCae)} /> <Switch checked={upperState} onChange={() => changeState(state.lowerCase)} /> {!isEqual(state, initialState) && ( <div> <Button onClick={onSubmit} /> 保存 <Button onClick={onCansel} /> キャンセル </div> )}
丸投げのデバッグ依頼に見えるので、axios でリクエスト投げたりする余分なコードを取り除いたミニマムなサンプルで試して、その結果どうなったのかを示してください。
それと、タイポとインデントを直されたほうが見やすくてよいかと思います。
あなたの回答
tips
プレビュー