redux-hooks的使用

redux-hooks的使用

useDispatch

我们在项目中不再使用繁琐的connect函数了,而是借助于redux-hoos的useDispatch来直接dispatch,而不再需要connect的mapStateToDispatch了。

useSelector

由于我们不再使用connect函数的mapStateToprops了,因此我们需要借助于useSelector来获取到请求回来的数据。

接受两个参数:

​ 参数一:它会接受你所想要返回的数据。

​ 参数二:shallowEqual在不使用第二个参数的情况下,它很可能会影响到我们的性能,因为在使用connect函数时,它的内部其实是有做一个浅拷贝的即父组件的重新渲染并不会每次都引起子组件的重新渲染除非子组件所依赖的数据也发生了变化。

源码如下:

export function useSelector<TState = DefaultRootState, TSelected = unknown>(
    selector: (state: TState) => TSelected,
    equalityFn?: (left: TSelected, right: TSelected) => boolean
): TSelected;

const refEquality = (a, b) => a === b//默认做的是一个引用的全等比较,因此必然会引起重复渲染

因此我们建议在使用时加上shallowEqual这个参数从而可以进行一个浅层的比较,避免组件的多次重新渲染。

const { topBanners } = useSelector(state => ({
    //因为使用了immutable.js,因此当然要使用get
    // topBanners: state.get("recommend").get("topBanners")
    //当然了如果嫌弃上面这样写麻烦的话也可以使用下面这种写法也是可以滴
    topBanners: state.getIn(["recommend", "topBanners"])
}), shallowEqual)

除以上两个外,redux也是有useReduxContext和useStore这两个hooks。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值