React 問答


React 父子組件之間如何通信。

參考答案
父組件要傳數據給子組件很簡單,直接放在 props 里即可
子組件要傳遞數據給父組件就復雜點:
父組件將一個函數 fn 作為子組件的 props 傳給子組件
子組件在恰當的時候調用這個 fn,并且把數據放在 fn 的參數里


React 任意組件之間如何通信。

參考答案

  • 使用 eventHub/eventBus 來通信
    一個組件監(jiān)聽某個事件,另一個組件觸發(fā)相同的事件并傳參,即可實現(xiàn)兩個組件的通信
    缺點是事件容易越來越多,不好控制代碼的復雜度
  • 使用 Redux
    每次操作觸發(fā)一個 action
    action 會觸發(fā)對應的 reducer
    reducer 會用舊的 state 和 action 造出一個新的 state
    使用 store.subscribe 監(jiān)聽 state 的變化,一旦 state 變化就重新 render(render 會做 DOM diff,確保只更新該更新的 DOM)

React 的創(chuàng)舉

虛擬DOM

  • 標簽就是函數
  • 函數就是對象
  • 標簽的屬性就是函數的參數

什么時候用函數什么時候用class

  • 組件非常的純凈 沒有內部狀態(tài)
  • 如果組件需要記錄自己的內部狀態(tài)

子組件怎么通知外界 (父子通信)

你只能通過回調的形式 調用別人給你傳的參數
父元素傳一個函數給子元素
子元素在恰當的時候調用這個函數
調用的時候可以傳參數


useEffect怎么使用

useEffect(()=>{
  依賴項發(fā)生變化執(zhí)行回調
},[依賴項,依賴項,依賴項]);

如果只想執(zhí)行一次 第二個參數 []

useState怎么使用

變量 使用 useState 定義 和 改變

const[x,setX] = useState(初始值)

通過第二個參數 setX 來 改變 x 的值
使用setX 來改變x值時, setX所在的 函數會重新執(zhí)行

useRef怎么使用

跨組件的狀態(tài)管理 使用 useRef

const xxx = useRef(初始值)
xxx.current = ...

Fragment

reutrn(
  <Fragment>
      <div><div> 
  </Fragment>
)

React.forwardRef

接受渲染函數作為參數。React 將使用 props 和 ref 作為參數來調用此函數。此函數應返回 React 節(jié)點

const FancyButton = React.forwardRef((props, ref) => (
  <button ref={ref} className="FancyButton">
    {props.children}
  </button>
));
const ref = React.createRef();
<FancyButton ref={ref}>Click me!</FancyButton>;

會創(chuàng)建一個React組件,這個組件能夠將其 參數ref 轉發(fā)到其組件樹下的另一個組件中

cloneElement()

React.cloneElement(
  element,
  [props],
  [...children]
)
  • 以 element 元素為樣板克隆并返回新的 React 元素。
  • 返回元素的 props 是將新的 props 與原始元素的 props 淺層合并后的結果。
    新的子元素將取代現(xiàn)有的子元素,
  • 而來自原始元素的 key 和 ref 將被保留。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • react 基本概念解析 react 的組件聲明周期 react 高階組件,context, redux 等高級...
    南航閱讀 1,137評論 0 1
  • react中文文檔以下文字均為看文檔后的筆記 用引號來定義以字符串為值的屬性 const element = ...
    727上上上閱讀 343評論 1 1
  • 作為一個合格的開發(fā)者,不要只滿足于編寫了可以運行的代碼。而要了解代碼背后的工作原理;不要只滿足于自己的程序...
    六個周閱讀 8,675評論 1 33
  • ----------------------react---------------------- 干嘛的:前端框...
    6e5e50574d74閱讀 851評論 0 0
  • 人的生命真的很脆弱,當什么事情都不發(fā)生時,似乎是能拖天的猛士,任何的風雨阻擋,都寫的渺小甚微。可達危險降臨我們脆弱...
    韓露sxie閱讀 234評論 0 0

友情鏈接更多精彩內容