ショッピングセンタープロジェクト
3287 ワード
これはアップル社のスピーチに基づいた文章です.
構成部品を作成、削除したり、関連するステータスを変更して再レンダリングできます.こう言うのは構成部分の人生です.
このときはHookの真ん中で口を挟むことができます
たとえば、このコマンドは、Detail構成部品が表示される前、削除前、および変更後に介入します.
Lifecycle Hook
userEffect()におけるコードの実行条件要素が初めて現れ、ロード終了後(専門用語mount) .構成部品の再レンダリング後(専門用語に更新) ページの上部にusEffectをインポートします. userEffect()を使用します. にコールバック関数を追加します. コールバック関数では、Detail素子が初めて出現した後に実行したいコードを書くことができます. 構成部品が消失した場合のコードの実行(専門用語でアンインストール)
returnを入れ、return値に入れた関数は構成部品が消えたときに実行されます.もちろん、他の場所で作成した関数名も使用できますし、arrow関数も使用できます.
作成順に機能を実現します.
ずっと覚えてる!UI要素の内容をStateとして保存します.
私の大まかな考えは、公告ウィンドウがtrueになるまでfalseであれば消えてしまいます. usStateでは、noticeという変数をtrue値として保存します.
2.条件文を使用してスイッチツールを作成します.
通知がtrueなら?次のコードを実行します.そうでなければ、次の空の値を実行します.消えるという意味です.
userEffectでは、コールバック関数であるsettimeoutもタイマと同様にコールバック関数を受け入れる.したがって、notice関数を変更することでnoticeをfalse値に変更します.しかし、条件で書いた2秒後.
など)
前述したように、userEffectは、素子の出現時に実行されるが、更新時にも実行される.
このため、画面が表示され、2秒後に通知は消えますが、画面が更新されると通知も消えます.
したがって、関数の末尾にカッコを付けてstate名を作成できます.これは、ステータス変更時にのみnoticeが実行されることを意味します.
[]ロビンフッドなら?
構成部品を更新しても、絶対に実行されません.これは、コンポーネントのロード時に一度だけ実行したい場合に使用するテクニックです.
Tip)settimeout使用時の注意点
Detailにアクセスしてから2秒後に通知を消す機能を作成しました.(前述の通り)
しかし、もし2秒前にそのページを離れたら?
残りのタイマーのため、変な現象が発生する可能性があります.
したがって、素子が消失した場合には、消去タイマのコードを追加することもできる.
前述したように、userEffect関数のreturn値は、素子が消失したときに殺されるコードであり、return値を用いてタイマーを消去するコードを追加するだけでよい.
Lifecycle
構成部品を作成、削除したり、関連するステータスを変更して再レンダリングできます.こう言うのは構成部分の人生です.
このときはHookの真ん中で口を挟むことができます
たとえば、このコマンドは、Detail構成部品が表示される前、削除前、および変更後に介入します.
Lifecycle Hook
class Detail2 extends React.Component {
componentDidMount(){
//Detail2 컴포넌트가 Mount 되고나서 실행할 코드
}
componentWillUnmount(){
//Detail2 컴포넌트가 Unmount 되기전에 실행할 코드
}
}
UserEffect()
userEffect()におけるコードの実行条件
import React, {useState, useEffect} from 'react';
function Detail(){
useEffect(()=>{
//코드를 적습니다 여기
});
return (
<HTML많은곳/>
)
}
returnを入れ、return値に入れた関数は構成部品が消えたときに実行されます.もちろん、他の場所で作成した関数名も使用できますし、arrow関数も使用できます.
import React, {useState, useEffect} from 'react';
function Detail(){
useEffect(()=>{
return function 어쩌구(){ 실행할 코드 }
});
return (
<HTML많은곳/>
)
}
複数使用可能作成順に機能を実現します.
import React, {useState, useEffect} from 'react';
function Detail(){
useEffect(()=>{
//1빠로 실행할 코드
});
useEffect(()=>{
//2빠로 실행할 코드
});
return (
<HTML많은곳/>
)
}
適用
Detailsページで作成した通知ウィンドウがコンポーネントの実行時に2秒後に消えたい場合は?
ずっと覚えてる!UI要素の内容をStateとして保存します.
私の大まかな考えは、公告ウィンドウがtrueになるまでfalseであれば消えてしまいます.
2.条件文を使用してスイッチツールを作成します.
通知がtrueなら?次のコードを実行します.そうでなければ、次の空の値を実行します.消えるという意味です.
前述したように、userEffectは、素子の出現時に実行されるが、更新時にも実行される.
このため、画面が表示され、2秒後に通知は消えますが、画面が更新されると通知も消えます.
したがって、関数の末尾にカッコを付けてstate名を作成できます.これは、ステータス変更時にのみnoticeが実行されることを意味します.
[]ロビンフッドなら?
構成部品を更新しても、絶対に実行されません.これは、コンポーネントのロード時に一度だけ実行したい場合に使用するテクニックです.
Tip)settimeout使用時の注意点
Detailにアクセスしてから2秒後に通知を消す機能を作成しました.(前述の通り)
しかし、もし2秒前にそのページを離れたら?
残りのタイマーのため、変な現象が発生する可能性があります.
したがって、素子が消失した場合には、消去タイマのコードを追加することもできる.
前述したように、userEffect関数のreturn値は、素子が消失したときに殺されるコードであり、return値を用いてタイマーを消去するコードを追加するだけでよい.
Reference
この問題について(ショッピングセンタープロジェクト), 我々は、より多くの情報をここで見つけました https://velog.io/@pjh1011409/쇼핑몰-프로젝트Lifecycle-useEffectテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol