TIL 50 Lifeループと条件付きレンダリング
9840 ワード
ライフサイクルのデフォルト順序
普通は使えます.あるイベントが終わってから終わるために.
タイマー機能を備えた構成部品に使用します.
親-子ライフサイクル
要素は独立していてもよいし、ある要素内の要素であってもよい.これが親子の関係です.
1.親構造関数
2.親レンダリング(親レンダリングの子に移動)
3.サブコンストラクタ
4.子表示
5.サブアセンブリDidMount(ここまで、親アセンブリに移動)
6.親コンポーネントDidMount
7.親取得の完了(setStateオカレンス>オカレンスの更新>再表示)
8.親レンダリング(親レンダリングのサブアセンブリに移動)
9.子の表示
10.サブアセンブリDidUpdate
(ComponentDidMountでは最初のレンダリングのみが実行されるため、ComponentDidUpdateが発生し、ここまでで親に戻ります.)
11.親コンポーネントDidUpdate
(コンポーネントDidMountは初期レンダリングを1回のみ実行するため、コンポーネントDidUpdateが発生します)
サブアイテムで条件付きレンダリングを使用する
マッピング・メソッドを使用して、配列データのオブジェクトまたは値を新しい配列にインポートします.
条件付きレンダリング?
&&演算子(最終演算子)-論理演算子.
特定の条件が満たされている場合に表示され、満たされていない場合にレンダリングする必要がない場合は、条件演算子で実現できます.
赤の部分は、「
this.state.data[0]
がtrueの場合のみ、this.state.data[0].name
がレンダリングされます.」上記のように、私が欲しいデータがある場合にのみ、ログインさせることでエラーを解決できます.
&&演算子を使うときの注意点!
0
はfalse
です.“”
もfalse
である.{this.state.data.message &&
this.state.data.message.map((msg, idx) => {
return <li key={idx}> {msg}</li>;
})}
値がある場合はマッピング関数を返します.LANDERに必要なデータを受信する前にマッピング関数を迂回しようとするのはエラーです.
模唱?元のページにもう一つのウィンドウが表示されます.パスが移動していません.
this.state= {
isMondalView: false
}
handleModal = () => {
//console.log("클릭");
}
<button className="addToCart"
onclick={this.handleModal}>구매하기</button>
//클릭이 먹히는 것을 확인.
this.state= {
this.setState({isModalView: !this.state.isModalView})
}
handleModalon = () => {
this.setState({isModalView: true})
}
handleModalOff = () => {
this.setState({isModalView: false})
}
//-> 중복되는 두 함수를 하나의 함수로 합해준 것.
return (
<>
{this.state.isModalView &&
<Modal handleModal={this.handleModal} />}
//그리고 자식 컴퍼넌트에 props 넘겨주기
<button onClick={this.props.handleModal}>close</button>
Reference
この問題について(TIL 50 Lifeループと条件付きレンダリング), 我々は、より多くの情報をここで見つけました https://velog.io/@poohv7/TIL50Life-Cycle-과-조건부-랜더링テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol