diff --git a/packages/animated/src/withAnimated.tsx b/packages/animated/src/withAnimated.tsx index f2fcdf6cb..cbfb3715a 100644 --- a/packages/animated/src/withAnimated.tsx +++ b/packages/animated/src/withAnimated.tsx @@ -1,5 +1,12 @@ import * as React from 'react' -import { forwardRef, useRef, Ref, useCallback, useEffect } from 'react' +import { + forwardRef, + useRef, + Ref, + useCallback, + useEffect, + MutableRefObject, +} from 'react' import { is, each, @@ -66,9 +73,11 @@ export const withAnimated = (Component: any, host: HostConfig) => { const observer = new PropsObserver(callback, deps) - const observerRef = useRef(null) + // NOTE: useRef is bugged as immutable in 18.3 types + const observerRef = useRef( + null + ) as MutableRefObject useIsomorphicLayoutEffect(() => { - // @ts-expect-error useRef immutable in 18.3 types observerRef.current = observer // Observe the latest dependencies. diff --git a/packages/shared/src/hooks/useMemoOne.ts b/packages/shared/src/hooks/useMemoOne.ts index 2ceac60a6..7d5cef54f 100644 --- a/packages/shared/src/hooks/useMemoOne.ts +++ b/packages/shared/src/hooks/useMemoOne.ts @@ -1,4 +1,4 @@ -import { useEffect, useRef, useState } from 'react' +import { useEffect, useRef, useState, MutableRefObject } from 'react' type Cache = { inputs?: any[] @@ -14,7 +14,8 @@ export function useMemoOne(getResult: () => T, inputs?: any[]): T { }) ) - const committed = useRef>(null) + // NOTE: useRef is bugged as immutable in 18.3 types + const committed = useRef>(null) as MutableRefObject | null> const prevCache = committed.current let cache = prevCache @@ -33,7 +34,6 @@ export function useMemoOne(getResult: () => T, inputs?: any[]): T { } useEffect(() => { - // @ts-expect-error useRef immutable in 18.3 types committed.current = cache if (prevCache == initial) { initial.inputs = initial.result = undefined