[解決済み] React JSでは、状態を直接変異させない、setState() react/no-direct-mutation-stateを使用する。
質問
<input
defaultValue={this.props.str.name}
ref={(input) => { this.state.name = input; }}
name="name"
type="text"
className="form-control"
onChange={this.handleInputChange}
/>
handleInputChange(event) {
this.setState({
[event.target.name]: event.target.value
});
}
if(this.state.name.value === "") {
this.msg.show('Required fields can not be empty', {
time: 2000,
type: 'info',
icon: <img src="img/avatars/info.png" role="presentation"/>
});
}
そんな感じでデフォルト値を設定しようとしているのですが、それにアクセスしたいとも思っていました。私はこのように、値にアクセスするために
this.state.name.value
という警告が表示されます。
状態を直接変更しないで、setState()を使用してください。 react/no-direct-mutation-state .
どのように解決するのですか?
<ブロッククオート取得 "状態を直接変更しないでください、setState()を使用してください。
なぜなら、ノード参照を保存するためのrefコールバックメソッド内で、状態の値を変更しているからです。
this.state.name = input;
解決策
参照先を格納するためにステート変数を使用しないでください。 は、コンポーネントインスタンスに格納され、時間と共に変化しないためです。
の通りです。 DOC :
状態には、このコンポーネントに固有のデータが含まれ、変更される可能性があります。 を使用します。状態はユーザー定義であり、プレーンな JavaScriptのオブジェクトです。
render()で使用しないのであれば、stateに入れるべきではありません。たとえば 例えば、インスタンスに直接タイマーのIDを入れることができます。
を使用しているので
制御入力要素
のように、refは必要ありません。直接使用する
this.state.name
を入力要素の値プロパティとし
this.state.name
を使用して値にアクセスします。
これを使う。
<input
value={this.state.name || ''}
name="name"
type="text"
className="form-control"
onChange={this.handleInputChange}
/>
を使いたい場合は
ref
の場合、インスタンスに直接参照を格納し、value プロパティを削除することで
onChange
イベントも利用できます。
<input
ref={el => this.el = el}
defaultValue={this.props.str.name}
name="name"
type="text"
className="form-control"
/>
ここで、次のように使用します。
ref
のように、値にアクセスすることができます。
this.el.value
関連
-
[解決済み] react nativeで関数だらけのヘルパーファイルを作成する方法は?
-
[解決済み] sh: react-scripts: npm start の実行後にコマンドが見つからない。
-
[解決済み] React - 予想外のトークン、予想外の;
-
[解決済み] setStateを呼び出さずにReactコンポーネントを強制的に再レンダリングすることは可能ですか?
-
[解決済み] Reactのstateとpropsの違いとは?
-
[解決済み] Reactでネストした状態のプロパティを更新する方法
-
[解決済み] React - uncaught TypeError: 未定義のプロパティ 'setState' を読み取れない
-
[解決済み] ReactのsetStateでオブジェクトを更新する
-
[解決済み] reactのsetStateメソッドを呼んでも、すぐにステートが変更されないのはなぜですか?
-
[解決済み】React:setStateを使用してstateのstate.item[1]を更新するには?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Reactコンポーネント内でswitchステートメントを使用するには?
-
[解決済み】ngrokがReact devサーバーに接続しようとすると、無効なホストヘッダが表示される。
-
[解決済み] テスト
-
[解決済み] ReactJsのCreateClassは関数ではない
-
[解決済み] TypeError: reactjs の未定義のプロパティ 'status' を読み取ることができません。
-
[解決済み] React-Router 4 キャッチオールルート
-
[解決済み] Uncaught (in promise) Error: リクエストに失敗、ステータスコード404
-
[解決済み] React JSでは、状態を直接変異させない、setState() react/no-direct-mutation-stateを使用する。
-
[解決済み] ReactコンポーネントのJest SnapshotテストにおけるSnapshotテストの仕組みとtoMatchSnapshot()関数は何をするのか?
-
[解決済み] componentDidUpdate'メソッドはいつ使用するのですか?