[解決済み] ReactJS: 子コンポーネント内の親コンポーネントへのsetState
2022-11-12 14:44:16
質問
子コンポーネントから親コンポーネントに setState を行うための推奨されるパターンは何でしょうか。
var Todos = React.createClass({
getInitialState: function() {
return {
todos: [
"I am done",
"I am not done"
]
}
},
render: function() {
var todos = this.state.todos.map(function(todo) {
return <div>{todo}</div>;
});
return <div>
<h3>Todo(s)</h3>
{todos}
<TodoForm />
</div>;
}
});
var TodoForm = React.createClass({
getInitialState: function() {
return {
todoInput: ""
}
},
handleOnChange: function(e) {
e.preventDefault();
this.setState({todoInput: e.target.value});
},
handleClick: function(e) {
e.preventDefault();
//add the new todo item
},
render: function() {
return <div>
<br />
<input type="text" value={this.state.todoInput} onChange={this.handleOnChange} />
<button onClick={this.handleClick}>Add Todo</button>
</div>;
}
});
React.render(<Todos />, document.body)
親の状態に保持されているTodoアイテムの配列があります。
親の状態にアクセスして新しいTodo項目を追加したい。
TodoForm
's
handleClick
コンポーネントを使用します。
私のアイデアは、親にsetStateを行い、新しく追加されたTodo項目をレンダリングすることです。
どのように解決するのですか?
親プロセスで、以下のような関数を作成します。
addTodoItem
のような関数を作成して、必要な setState を実行し、その関数を子コンポーネントに props として渡します。
var Todos = React.createClass({
...
addTodoItem: function(todoItem) {
this.setState(({ todos }) => ({ todos: { ...todos, todoItem } }));
},
render: function() {
...
return <div>
<h3>Todo(s)</h3>
{todos}
<TodoForm addTodoItem={this.addTodoItem} />
</div>
}
});
var TodoForm = React.createClass({
handleClick: function(e) {
e.preventDefault();
this.props.addTodoItem(this.state.todoInput);
this.setState({todoInput: ""});
},
...
});
を呼び出すことができます。
addTodoItem
を呼び出すことができます。これにより、親に setState が実行され、新しく追加された ToDo アイテムがレンダリングされます。アイデアをつかんでいただければ幸いです。
関連
-
[解決済み】React Propsが定義されていません。
-
[解決済み] react - createMuiThemeとcreateThemeの違い。
-
[解決済み] React - _this2.SetStateは関数ではありません。
-
[解決済み] react.jsで複数のモジュールをエクスポートする
-
[解決済み] React JSX内のループ
-
[解決済み] setStateを呼び出さずにReactコンポーネントを強制的に再レンダリングすることは可能ですか?
-
[解決済み] 親メソッドから子メソッドを呼び出す
-
[解決済み] ReactJSでコンポーネントがtext型の非制御入力を制御エラーに変更する場合
-
[解決済み] ReactJSで子コンポーネントから親コンポーネントにデータを渡すには?
-
[解決済み】ReactJS - "setState "が呼ばれるたびにrenderが呼び出されるのですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Typescript react - モジュール ''react-materialize'' の宣言ファイルが見つかりませんでした。'path/to/module-name.js' は暗黙のうちに any 型を持ちます。
-
[解決済み】React Propsが定義されていません。
-
[解決済み] sh: react-scripts: npm start の実行後にコマンドが見つからない。
-
[解決済み] React - _this2.SetStateは関数ではありません。
-
[解決済み] ReactJS - SCRIPT1010: 期待される識別子 - IE11 で本番ビルドが実行されない
-
[解決済み] ReactJS で inst.render が関数でないエラーが発生する
-
[解決済み] Static HTML elements with event handlers require a role." を修正するにはどうすればよいですか?
-
[解決済み] React Router - バージョン更新後のwithRouterでTypescriptエラーが発生する。
-
[解決済み] componentDidUpdate'メソッドはいつ使用するのですか?
-
[解決済み】フォーム要素の状態を兄弟/親要素に渡す正しい方法とは?