wana
Version:
Easy observable state for React
30 lines (26 loc) • 789 B
text/typescript
import { isDev } from '@alloc/is-dev'
import { getCurrentAuto } from '../debug'
import { globals } from '../globals'
import { useAutoDepth } from '../ui/context'
import { logRender } from './logRender'
// Track which component began rendering most recently.
let lastComponent: React.ComponentType | undefined
if (isDev) {
const { onRender } = globals
globals.onRender = (auto, depth, component) => {
lastComponent = component
if (onRender) {
onRender(auto, depth, component)
}
}
}
export function useRenderLog() {
const depth = useAutoDepth()
if (isDev) {
const auto = getCurrentAuto()
if (!auto || !lastComponent) {
throw Error('Cannot call "useRenderLog" outside a "withAuto" component')
}
logRender(auto, depth, lastComponent)
}
}