[解決済み] React Hooksによる初期状態へのリセット
2023-04-02 03:24:03
質問
私は現在サインアップフォームを作成しており、以下は私のコードのスニペットです。
const Signup = () => {
const [username, setUsername] = useState('')
const [email, setEmail] = useState('')
const [password, setPassword] = useState('')
const [passwordConfirmation, setPasswordConfirmation] = useState('')
const clearState = () => {
setUsername('')
setEmail('')
setPassword('')
setPasswordConfirmation('')
}
const handleSubmit = signupUser => e => {
e.preventDefault()
signupUser().then(data => {
console.log(data)
clearState() // <-----------
})
}
return <JSX />
}
export default Signup
状態の各部分は、フォームの制御された入力に使用されます。
基本的に私がやりたいことは、ユーザーがサインアップに成功した後、フィールドをクリアした状態で初期状態に戻ることです。
で各状態を空文字列に手動で戻すのはかなり大変です。
clearState
Reactに付属しているメソッドや関数で、stateを初期値に戻すようなものはないでしょうか?
どのように解決するのですか?
悲しいかな、状態を初期値に戻す方法は内蔵されていません。
しかし、もし必要な関数を減らしたいのであれば、フォームの状態全体を1つの状態変数オブジェクトに入れ、初期オブジェクトにリセットすればよいでしょう。
例
const { useState } = React;
function signupUser() {
return new Promise(resolve => {
setTimeout(resolve, 1000);
});
}
const initialState = {
username: "",
email: "",
password: "",
passwordConfirmation: ""
};
const Signup = () => {
const [
{ username, email, password, passwordConfirmation },
setState
] = useState(initialState);
const clearState = () => {
setState({ ...initialState });
};
const onChange = e => {
const { name, value } = e.target;
setState(prevState => ({ ...prevState, [name]: value }));
};
const handleSubmit = e => {
e.preventDefault();
signupUser().then(clearState);
};
return (
<form onSubmit={handleSubmit}>
<div>
<label>
Username:
<input value={username} name="username" onChange={onChange} />
</label>
</div>
<div>
<label>
Email:
<input value={email} name="email" onChange={onChange} />
</label>
</div>
<div>
<label>
Password:
<input
value={password}
name="password"
type="password"
onChange={onChange}
/>
</label>
</div>
<div>
<label>
Confirm Password:
<input
value={passwordConfirmation}
name="passwordConfirmation"
type="password"
onChange={onChange}
/>
</label>
</div>
<button>Submit</button>
</form>
);
};
ReactDOM.render(<Signup />, document.getElementById("root"));
<script src="https://unpkg.com/react@16/umd/react.development.js"></script>
<script src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script>
<div id="root"></div>
関連
-
[解決済み] react-navigation v5を使ったreact-nativeアプリのAppNavigatorの構文を更新する。
-
[解決済み] Reactルータを使ったプログラムによるナビゲーション
-
[解決済み] React JSX内のループ
-
[解決済み] Reactのこの3つの点は何をするところなのでしょうか?
-
[解決済み] React NativeとReactの違いは何ですか?
-
[解決済み] Reactのstateとpropsの違いとは?
-
[解決済み] Reactでネストした状態のプロパティを更新する方法
-
[解決済み] React HooksでcomponentWillMount()を使用するには?
-
[解決済み】React Hooks useState()でオブジェクトを使用する。
-
[解決済み】React Hooks useEffectでoldValuesとnewValuesを比較する方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Warning.Itが表示されるのはなぜですか?Functions are not valid as a React child?
-
[解決済み】プリセットファイルはオブジェクトのエクスポートができない
-
[解決済み] React-Router 4 キャッチオールルート
-
[解決済み] Webpack のコンパイルに失敗した
-
[解決済み] reactstrapのドロップダウンで選択されたアイテムを設定する方法は?
-
[解決済み] React JSでは、状態を直接変異させない、setState() react/no-direct-mutation-stateを使用する。
-
[解決済み] nginxでcertbotを使用する際の問題点
-
[解決済み] Cross-envでyarnの実行時にenv変数が変更されない。
-
[解決済み] AxiosにCORSの問題が発生
-
[解決済み] React」は定義される前に使用されていた