1. コンポーネントの実装方法:
1. JS関数を通じてコンポーネントを実装する<div id="アプリ"></div> <script type="text/babel"> var ReactDiv = document.getElementById('app'); 関数 GetReactComp(){ return <p>私はReactコンポーネントです</p> } const hellocomp = < GetReactComp /> //最初の文字を大文字にする const reactSpan = ( <span> { hellocomp } </span> ) ReactDOM.render(reactSpan、ReactDiv) は、 </スクリプト> 2. ES6クラスを通じてコンポーネントを実装する<div id="クラス"></div> <script type="text/babel"> var reactDiv1=document.getElementById('class'); //クラスコンポーネントを定義する class MyReactComp extends React.Component{ 与える(){ 戻る ( <h2>クラスコンポーネント</h2> ) } } //クラスコンポーネントを使用する const testDiv = ( <div>{<MyReactComp/> </div> ) //ReactDOM.render(testDiv,reactDiv1) をマウントします </スクリプト> 2. Propsコンポーネント値の転送React には、props に対する厳格な保護メカニズムがあります。値が与えられると、コンポーネント内で <div id="アプリ"></div> <script type="text/babel"> var reactDiv = document.getElementById('app'); クラスReactClassCompはReact.Componentを拡張します。 与える(){ 戻る ( <div> <p>ユーザー名: <input type="text" value={ this.props.name }/></p> <p>性別: <input type="text" value={ this.props.gender }/></p> </div> ) } } ReactClassComp.defaultProps={ 名前:「劉備」、 性別: '男性' } 定数 reactp = ( <span> {<ReactClassComp />} </span> ) ReactDOM.render(reactdiv,reactdiv) </スクリプト> 注意: 多くの場合、データの更新に合わせてコンポーネントのコンテンツを更新する必要があります。このとき、React が提供する State を使用する必要があります。 3. 状態
1. Reactライフサイクルマウント(マウント):コンポーネントインスタンスが作成され、DOMに挿入されると (1) コンストラクターは次の 2 つの場合にのみ使用されます。
注意: コンストラクター() 関数内で setState() メソッドを呼び出さないでください。内部状態を使用する必要がある場合は、コンストラクターで this.state を直接割り当てて状態を初期化できます。 コンストラクタ(props){ スーパー(小道具); この状態 = { 日付:新しい日付() } this.handleShow = this.handleShow.bind(this) } (2) this.props と this.state の変更をチェックし、次のいずれかの型を返します。
(3)
注: ComponentDidMount() 内で setState() を直接呼び出すことができます。追加のレンダリングがトリガーされますが、このレンダリングはブラウザが画面を更新する前に行われます。これにより、render() が 2 回呼び出されても、ユーザーには中間状態が表示されなくなります。 更新: コンポーネント更新(前のプロパティ){ if(this.props.userID !== prevProps.userID){ this.fetchData(this.props.userID) } } 注意: combositionDidUpdate() で setState() を呼び出す場合は、条件文でラップする必要があります。そうしないと、無限ループが発生します。また、追加の再レンダリングも発生し、ユーザーには見えませんが、コンポーネントのパフォーマンスに影響します。 アンインストール: 2. ライフサイクルインスタンス-->クロック:<div id="アプリ"></div> <script type="text/babel"> var reactDiv = document.getElementById('app') //クラスコンポーネントMyStateCompを定義する クラスMyStateCompはReact.Componentを拡張します。 //コンストラクタ コンストラクタ(props) { スーパー(小道具); // this.state を通じて内部的に状態を初期化します this.state = { 日付:新しい日付()、 表示:false、 テキスト:'表示' } // インスタンスをイベント処理関数にバインドします this.handleShow = this.handleShow.bind(this) } //サブスクリプションを追加するcomponentDidMount() { this.timerID = setInterval(()=>this.tick(),1000) } //時間関数 tick() { this.setState({ //setStateはコンポーネントの状態を更新します 日付:新しい日付() }) } //インスタンスの表示、非表示 handleShow() { this.setState(state=>({ 表示: !state.show, テキスト: !state.show?'非表示':'表示' })) } //コンポーネントのアンインストール: タイマーをクリアするcomponentWillUnmont() { クリア間隔(this.timerID) } 与える() { isShow を this.state.show とします。 要素をletします。 if(isShow){ 要素 = <h2 >{this.state.date.toLocaleTimeString()}</h2> }それ以外{ 要素 = null } 戻る ( <div> <button onClick={this.handleShow}>{this.state.text}時間</button> {要素} </div> ) } } 定数反応スパン = ( <span> {<MyStateComp/> } </span> ) ReactDOM.render(reactSpan、reactDiv) は、 </スクリプト> React State とライフサイクルに関するこの記事はこれで終わりです。React State ライフサイクルに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: mysql5.7.18のインストールと初期パスワードの変更方法
>>: Docker コンテナのデプロイの試み - マルチコンテナ通信 (node+mongoDB+nginx)
これは今日私が踏んだ4つの落とし穴を記念したものです...落とし穴1:地元のせいエラー:エラー 39...
1. forEach() は map() に似ています。これも渡された関数に各要素を順番に適用します...
Ubuntu 15.04 は MySQL リモート ポート 3306 を開きます。以下の操作はすべて...
目次リポジトリソースを変更する起動するvue-devtoolsを置き換える予防ボーダーレスウィンドウ...
目次SQLを理解するSELECTを理解するエイリアス定数をクエリし、固定定数列を追加します。重複行を...
効果画像: 序文:最近、屋外の大画面プロジェクトに取り組んでいました。システムの入力方法は使いにくか...
プロジェクトでは、プロジェクトが呼び出すカスタム パブリック コンポーネントに遭遇します。通常、pr...
CSSの記述順序1. 位置属性(位置、上、右、z-index、表示、フロートなど) 2. サイズ(...
インターネット上には Linux サーバーを監視するためのツール、コンポーネント、プログラムが多数あ...
1. ファイル名検索を実行するwhich ('実行可能ファイル' を検索) //PA...
今日は断片化された画像の読み込み効果を実装します。効果は次のとおりです。 これを 3 つのステップで...
目次1. Springbootプロジェクトを準備する2. 関連する設定を実行する3.パッケージ4.D...
質問今日、プロジェクト関数を書いていたとき、金額の統計計算を行い、単位を変換する必要がありました。そ...
問題を見つける上位の SQL ステートメントを取得すると、DB が大量のselect @@sessi...
序文多くの学生は既に再帰に精通していると思います。アルゴリズムの問題を解決するために再帰がよく使...