是否应使用双感叹号转换可选布尔值?RTK Query skip属性对比
关于RTK Query中skip属性传undefined与false的行为对比
先直接给结论:两种写法的功能完全一致,不会引发bug,具体分析如下:
RTK Query对skip参数的内部处理
RTK Query的useQuery钩子中,skip参数默认值为false,且内部会通过skip ?? false的逻辑处理传入的undefined——也就是说,当你传递skip: undefined时,会自动 fallback 到默认值false,和直接传递skip: false的行为完全相同。两种写法的场景覆盖对比
针对你定义的Example接口,object.isDisabled可能的取值为true、false、undefined,两种写法的对应行为完全一致:- 当
object.isDisabled = true:写法一skip: true,写法二!!true = true→ 均跳过请求 - 当
object.isDisabled = false:写法一skip: false,写法二!!false = false→ 均执行请求 - 当
object.isDisabled = undefined:写法一skip: undefined被转为false,写法二!!undefined = false→ 均执行请求
- 当
是否需要用双感叹号(!!)?
从功能上看完全没必要,RTK Query已经帮你处理了undefined的情况。但从代码可读性角度,!!object.isDisabled可以明确将值转为布尔类型,让其他开发者一眼看出skip是布尔值而非可能的undefined——这属于代码风格层面的选择,不影响功能。
内容的提问来源于stack exchange,提问作者dellus
相关产品推荐
相关产品推荐

