React Hook - fantasy0107/notes GitHub Wiki

參考資料

Hooks API 參考 從 Hooks 開始,讓你的網頁 React 起來

Hook 是 React 16.8 中增加的新功能。它讓你不必寫 class 就能使用 state 以及其他 React 的功能。

useState / State hook

回傳一個 state 的值,以及更新 state 的 function。

// initialState 參數只會在初始 render 時使用,在後續 render 時會被忽略。
const [state, setState] = useState(() => {
  const initialState = someExpensiveComputation(props);
  return initialState;
});

useEffect / Effect Hook

接受一個包含指令式,且可能有副作用程式碼的 function。 第一個參數 - function 第二個參數 - 用來辨識函式執不執行

清除一個 effect

useEffect(() => {
  const subscription = props.source.subscribe();
  return () => {
    // Clean up the subscription
    subscription.unsubscribe();
  };
});

有條件的觸發 effect

useEffect(
  () => {
    const subscription = props.source.subscribe();
    return () => {
      subscription.unsubscribe();
    };
  },
  [props.source],
);

如果你想 effect 只執行和清除一次(在 mount 和 unmount),你可以傳遞一個空的 array ([])作為第二個參數