假设我想创建一个像 useEffect
一样的react钩子,但是它只有在所有依赖项都是非零的时才能运行的。看起来这样:
const useNonNullEffect = (callback: () => void, deps: any[]) => useEffect(() => {
if(deps.every(dep => dep !== null)) callback()
}, deps)
但是,这无法传递"严格依赖性" linter:
- 它将
callback
视为未宣布的依赖。 - 我不能解析
deps
,因为它不是数组字面的。
是否有某种方法可以创建这样的钩子,在这里我将一组依赖项从用户中转发到"真实"钩子?
?(我的实际用例更为复杂,这只是出于堆栈溢出目的的问题的简单表达(
,如果您不声明自己的使用效果效果回调,我认为林格不会抱怨deps或回调。
const useNonNullEffect = (callback: () => void, deps: any[]) => {
const fn = () => {
if(deps.some(dep => dep === null)){
return
}
return callback()
}
useEffect(fn, deps)
}
不确定是否是故意的,或者将来的行为是否会发生变化,但是目前,如果您在此codesandbox中选中"问题"选项卡,则应报告0个刺激问题。