[解決済み] Reactで子コンポーネントを動的に追加する
2022-12-20 07:14:35
質問
私の目標は、ページ/親コンポーネントにコンポーネントを動的に追加することです。
私はこのようないくつかの基本的な例のテンプレートから始めました。
main.js。
var App = require('./App.js');
var SampleComponent = require('./SampleComponent.js');
ReactDOM.render(<App/>, document.body);
ReactDOM.render(<SampleComponent name="SomeName"/>, document.getElementById('myId'));
App.jsです。
var App = React.createClass({
render: function() {
return (
<div>
<h1>App main component! </h1>
<div id="myId">myId div</div>
</div>
);
}
});
SampleComponent.jsです。
var SampleComponent = React.createClass({
render: function() {
return (
<div>
<h1>Sample Component! </h1>
</div>
);
}
});
ここで
SampleComponent
にマウントされています。
<div id="myId"></div>
ノードにあらかじめ書かれている
App.js
テンプレートにあらかじめ記述されている。しかし、App コンポーネントに不特定多数のコンポーネントを追加する必要がある場合はどうすればいいのだろうか。明らかに、私は必要なすべての
divs
をそこに置くことはできません。
いくつかのチュートリアルを読んだ後、私はまだコンポーネントが作成され、親コンポーネントに動的に追加される方法について理解していない。それを行う方法は何ですか?
どのように解決するのですか?
以下のように、コンポーネントを子として渡す必要があります。
var App = require('./App.js');
var SampleComponent = require('./SampleComponent.js');
ReactDOM.render(
<App>
<SampleComponent name="SomeName"/>
<App>,
document.body
);
そして、コンポーネントのボディにそれらを追加します。
var App = React.createClass({
render: function() {
return (
<div>
<h1>App main component! </h1>
{
this.props.children
}
</div>
);
}
});
HTMLコードを手動で操作する必要はなく、Reactが代わりにやってくれます。子コンポーネントを追加したい場合は、propsやstateを変更すればよいだけです。例えば
var App = React.createClass({
getInitialState: function(){
return [
{id:1,name:"Some Name"}
]
},
addChild: function() {
// State change will cause component re-render
this.setState(this.state.concat([
{id:2,name:"Another Name"}
]))
}
render: function() {
return (
<div>
<h1>App main component! </h1>
<button onClick={this.addChild}>Add component</button>
{
this.state.map((item) => (
<SampleComponent key={item.id} name={item.name}/>
))
}
</div>
);
}
});
関連
-
[解決済み] 2つのJavaScriptオブジェクトのプロパティを動的にマージするにはどうすればよいですか?
-
[解決済み] jQueryでテーブルの行を追加する
-
[解決済み] JavaScriptで配列の先頭に新しい配列要素を追加するにはどうすればよいですか?
-
[解決済み] Reactルータを使ったプログラムによるナビゲーション
-
[解決済み] React JSX内のループ
-
[解決済み] 動的に生成された要素にイベントバインディングを行うか?
-
[解決済み] Reactのこの3つの点は何をするところなのでしょうか?
-
[解決済み] React NativeとReactの違いは何ですか?
-
[解決済み] Reactコンポーネントに条件付きで属性を追加するにはどうすればよいですか?
-
[解決済み] 親メソッドから子メソッドを呼び出す
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Javascriptによるタッチスクリーンデバイスの検出
-
[解決済み] javascriptで2つの数値を連結する方法は?
-
[解決済み] JavaScriptを使用してHTML要素に属性を追加/更新するには?
-
[解決済み] React js 親コンポーネントから子コンポーネントの状態を変更する
-
[解決済み] Javascript 空の配列の削減
-
[解決済み] Javascript / jQueryでAndroid端末を検出する。
-
[解決済み] react-routerのハッシュフラグメントからクエリパラメータを取得する
-
[解決済み] JavaScriptでjson-objectのキーを取得する [重複].
-
[解決済み] JSHintの'+'前の改行不良の説明
-
[解決済み] JavaScriptの文字列プリミティブとStringオブジェクトの違いは何ですか?