useCoEffect
与useEffect类似,可以接受一个Generator函数callback, callback函数中可以 yield Promise,与async函数中的await Promise功能相同 当deps发生变化或Component被卸载的时候, 这个Generator函数的执行会中断在当前的yield位置。 中断时既不执行下一个语句,也不抛出异常, 但finally块在中断后仍会被执行。 callback函数的finally块中可以使用isCancelled检查 当前执行过程是否被取消
import {IHttpClient,IContext} from "cyl-hooks-tools"
export interface Test {
id:number
name:string
createTime:number
}
export function getTests(ctx:IContext<IHttpClient,object>,testId:number):Promise<Test[]>{
return ctx.get("https://chuyanlon.github.io/cyl-hooks-tools-doc/api/tests.json",{testId})
}
import {useApi,IContext,IHttpClient} from "cyl-hooks-tools"
import {useCoEffect} from "cyl-hooks-tools/useCo"
import {getTests} from "./test.ts"
export default function Component(){
const api = useApi<IContext<IHttpClient,object>>()
const [testId,setTestId] = useState(1)
useCoEffect(function *(){
yield getTests(api,testId)
console.log("请求完毕")
},[testId])
return <div>
useCoEffect
</div>
}
// Make sure to add code blocks to your code group
上次更新: 2023/05/08, 19:10:56