RTK Query:如何有条件地从props的useLazySearchQuery获取trigger?
解决方案
你之前的写法报错,是因为当props.useLazySearchQuery为undefined时,props.useLazySearchQuery && props.useLazySearchQuery()的结果是undefined,而你试图对undefined做数组解构,这在JS里会抛出“Cannot destructure property '0' of 'undefined' as it is undefined”的错误。
可以用以下两种方式解决:
方式一:可选链+默认空数组
用可选链操作符?.确保只有钩子存在时才调用,再用空数组作为默认值,避免解构报错:
const [trigger] = props.useLazySearchQuery?.() ?? [];
当钩子不存在时,props.useLazySearchQuery?.()返回undefined,?? []会把它替换成空数组,此时trigger会被赋值为undefined,不会触发错误。
方式二:条件判断后执行
如果觉得可选链语法不够直观,也可以用常规的条件判断:
let trigger; if (props.useLazySearchQuery) { [trigger] = props.useLazySearchQuery(); }
这种写法逻辑清晰,只有当钩子存在时才执行解构操作,不存在时trigger保持undefined。
内容的提问来源于stack exchange,提问作者Kostya GL
相关产品推荐
相关产品推荐

