父元件通過props向子元件傳遞引數
父元件將乙個函式作為props傳遞給子元件,子元件呼叫該**函式,向父元件通訊。
中間元件層層傳遞props(存在巢狀太深的問題)
使用context物件(推薦)
context是全域性容器,靜態屬性,使用條件:
父元件要宣告自己支援context,並提供context中屬性的proptypes
子元件要宣告自己需要使用context,並提供需要使用的context中屬性的proptypes
父元件需提供乙個getchildcontext函式,返回乙個相應的初始context物件
若元件中使用constructor函式,務必在建構函式中傳入第二個引數context,並在super呼叫父類建構函式時也傳入context,否則會造成元件中無法使用context
constructor(props,context)
利用二者共同父元件的context物件通訊(存在巢狀太深、元件耦合度大的問題)
使用自定義事件的方式(事件訂閱,推薦)
throttle,阻止函式在給定時間內被多次呼叫。
import throttle from 'lodash.throttle';class loadmorebutton extends react.component
componentwillunmount()
render()
handleclick()
}
debounce,確保函式上次執行後的一段時間內,不會再次執行。
import debounce from 'lodash.debounce';class searchbox extends react.component
componentwillunmount()
render()
handlechange(e)
emitchange(value)
}
參考元件通訊 - 在元件中使用事件處理函式;
函式節流和函式去抖
在日常的開發過程中,會有這樣的場景,事件被頻繁的觸發,比如說我們的在輸入的時候監控keypress事件,在頁面滾動的時候監控頁面的滾動事件。比如我們監控頁面的resize事件,拉動視窗改變大小的時候,resize事件被頻繁的執行 事件處理函式簡單的話還好,但是如果是複雜的dom操作,可能會導致整個u...
js 什麼是函式節流與函式去抖
意思 節省流量,不會一直訪問。指定時間內不執行,指定時間後執行。一段時間內只執行一次 場景 比如控制遊戲人物攻擊,時間內就算按得很快,也只能砍一刀,過後才能砍第二刀。搜尋引擎聯想詞。搜尋框的oninput事件節流。引數 乙個函式,乙個時間 返回 乙個函式 對比時間進行處理 function thro...
函式防抖與函式節流
函式防抖 debounce 當呼叫動作過n毫秒後,才會執行該動作,若在這n毫秒內又呼叫此動作則將重新計算執行時間 函式節流 throttle 預先設定乙個執行週期,當呼叫動作的時刻大於等於執行週期則執行該動作,然後進入下乙個新週期 函式節流 throttle 與函式防抖 debounce 都是為了限...