Hooks
useSelector
type Comparator<V> = function (left: V, right: V): boolean
function useSelector<Store, Selected>(selector: Store => Selected, comparator: Comparator<Selected>)
-
只有回傳的數值變動時才會觸發 re-render。
-
不同於
connectAPI,使用的是===比對,而非 shallow equality。-
如果需要 shallow equality,可以使用
import { shallowEqual } from "react-redux":import { useSelector, shallowEqual } from "react-redux"; const selector = store => store; const value = useSelector(selector, shallowEqual);
-
-
如果 useSelector 中的 selector 為 inline function,則此 function 每次 re-render 的是重新生成的,因此每次 re-render 都會執行。
- 如果 selector 跟 props 及 state 無關的話,或是只用在單一元件,可以將 selector 的宣告移出 function component 。
useDispatch
回傳 dispatch function。