rsnext/packages/next/shared/lib/flush-effects.tsx
Jiachi Liu aef60dc581
Support multiple flush effects (#39559)
Bring more flexibility for consume flush effects in separate places. Then you can move it into different client components roots
2022-08-12 19:06:08 +00:00

15 lines
495 B
TypeScript

import React, { createContext, useContext } from 'react'
export type FlushEffectsHook = (callbacks: () => React.ReactNode) => void
export const FlushEffectsContext = createContext<FlushEffectsHook | null>(
null as any
)
export function useFlushEffects(callback: () => React.ReactNode): void {
const addFlushEffects = useContext(FlushEffectsContext)
// Should have no effects on client where there's no flush effects provider
if (addFlushEffects) {
addFlushEffects(callback)
}
}