From a39aa372316b6c755a9b81aec4a5a76468222930 Mon Sep 17 00:00:00 2001 From: simoleo89 Date: Mon, 11 May 2026 21:33:58 +0200 Subject: [PATCH] React 19: useRef() -> useRef(null) across 15 sites MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit React 19 dropped the no-arg useRef overload — the type-only useRef() form (no initial value) is gone, every call must pass an initial value. The codebase had 15 occurrences of useRef() (DOM ref pattern) all flagged by tsgo as 'Expected 1 arguments, but got 0'. Mechanical sweep to useRef(null) — no behavior change, React still hands out a ref object with .current set to null at mount. Net tsgo error count: 57 -> 42. --- src/common/card/NitroCardView.tsx | 2 +- src/common/draggable-window/DraggableWindow.tsx | 2 +- src/common/layout/LayoutMiniCameraView.tsx | 2 +- src/common/layout/LayoutRoomPreviewerView.tsx | 2 +- src/components/camera/views/CameraWidgetCaptureView.tsx | 2 +- .../catalog/views/page/widgets/CatalogBundleGridWidgetView.tsx | 2 +- .../catalog/views/page/widgets/CatalogItemGridWidgetView.tsx | 2 +- .../catalog/views/page/widgets/CatalogSpacesWidgetView.tsx | 2 +- src/components/friends/views/messenger/FriendsMessengerView.tsx | 2 +- src/components/game-center/views/GameStageView.tsx | 2 +- src/components/navigator/NavigatorView.tsx | 2 +- src/components/room/RoomView.tsx | 2 +- src/components/room/widgets/chat/ChatWidgetView.tsx | 2 +- .../room/widgets/object-location/ObjectLocationView.tsx | 2 +- src/components/toolbar/ToolbarMeView.tsx | 2 +- 15 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/common/card/NitroCardView.tsx b/src/common/card/NitroCardView.tsx index 2d028f2..0e7488f 100644 --- a/src/common/card/NitroCardView.tsx +++ b/src/common/card/NitroCardView.tsx @@ -12,7 +12,7 @@ export interface NitroCardViewProps extends DraggableWindowProps, ColumnProps export const NitroCardView: FC = props => { const { theme = 'primary', uniqueKey = null, handleSelector = '.drag-handler', windowPosition = DraggableWindowPosition.CENTER, disableDrag = false, overflow = 'hidden', position = 'relative', gap = 0, classNames = [], isResizable = true, ...rest } = props; - const elementRef = useRef(); + const elementRef = useRef(null); const getClassNames = useMemo(() => { diff --git a/src/common/draggable-window/DraggableWindow.tsx b/src/common/draggable-window/DraggableWindow.tsx index 524fff6..f4af261 100644 --- a/src/common/draggable-window/DraggableWindow.tsx +++ b/src/common/draggable-window/DraggableWindow.tsx @@ -30,7 +30,7 @@ export const DraggableWindow: FC = props => const [isDragging, setIsDragging] = useState(false); const [isPositioned, setIsPositioned] = useState(false); const [dragHandler, setDragHandler] = useState(null); - const elementRef = useRef(); + const elementRef = useRef(null); const bringToTop = useCallback(() => { diff --git a/src/common/layout/LayoutMiniCameraView.tsx b/src/common/layout/LayoutMiniCameraView.tsx index 5845332..10fbd3e 100644 --- a/src/common/layout/LayoutMiniCameraView.tsx +++ b/src/common/layout/LayoutMiniCameraView.tsx @@ -12,7 +12,7 @@ interface LayoutMiniCameraViewProps { export const LayoutMiniCameraView: FC = props => { const { roomId = -1, textureReceiver = null, onClose = null } = props; - const elementRef = useRef(); + const elementRef = useRef(null); const getCameraBounds = () => { diff --git a/src/common/layout/LayoutRoomPreviewerView.tsx b/src/common/layout/LayoutRoomPreviewerView.tsx index d35294c..4355e40 100644 --- a/src/common/layout/LayoutRoomPreviewerView.tsx +++ b/src/common/layout/LayoutRoomPreviewerView.tsx @@ -7,7 +7,7 @@ export const LayoutRoomPreviewerView: FC<{ }> = props => { const { roomPreviewer = null, height = 0 } = props; - const elementRef = useRef(); + const elementRef = useRef(null); const onClick = (event: MouseEvent) => { diff --git a/src/components/camera/views/CameraWidgetCaptureView.tsx b/src/components/camera/views/CameraWidgetCaptureView.tsx index 49e6d71..45657e0 100644 --- a/src/components/camera/views/CameraWidgetCaptureView.tsx +++ b/src/components/camera/views/CameraWidgetCaptureView.tsx @@ -19,7 +19,7 @@ export const CameraWidgetCaptureView: FC = props = const { onClose = null, onEdit = null, onDelete = null } = props; const { cameraRoll = null, setCameraRoll = null, selectedPictureIndex = -1, setSelectedPictureIndex = null } = useCamera(); const { simpleAlert = null } = useNotification(); - const elementRef = useRef(); + const elementRef = useRef(null); const selectedPicture = ((selectedPictureIndex > -1) ? cameraRoll[selectedPictureIndex] : null); diff --git a/src/components/catalog/views/page/widgets/CatalogBundleGridWidgetView.tsx b/src/components/catalog/views/page/widgets/CatalogBundleGridWidgetView.tsx index 0257aed..a5cffce 100644 --- a/src/components/catalog/views/page/widgets/CatalogBundleGridWidgetView.tsx +++ b/src/components/catalog/views/page/widgets/CatalogBundleGridWidgetView.tsx @@ -11,7 +11,7 @@ export const CatalogBundleGridWidgetView: FC = { const { columnCount = 5, children = null, ...rest } = props; const { currentOffer = null } = useCatalog(); - const elementRef = useRef(); + const elementRef = useRef(null); useEffect(() => { diff --git a/src/components/catalog/views/page/widgets/CatalogItemGridWidgetView.tsx b/src/components/catalog/views/page/widgets/CatalogItemGridWidgetView.tsx index e875791..5b627c7 100644 --- a/src/components/catalog/views/page/widgets/CatalogItemGridWidgetView.tsx +++ b/src/components/catalog/views/page/widgets/CatalogItemGridWidgetView.tsx @@ -16,7 +16,7 @@ export const CatalogItemGridWidgetView: FC = pro const { currentOffer = null, currentPage = null, selectCatalogOffer = null } = useCatalog(); const catalogAdmin = useCatalogAdmin(); const adminMode = catalogAdmin?.adminMode ?? false; - const elementRef = useRef(); + const elementRef = useRef(null); const [ dragIndex, setDragIndex ] = useState(null); const [ dropIndex, setDropIndex ] = useState(null); diff --git a/src/components/catalog/views/page/widgets/CatalogSpacesWidgetView.tsx b/src/components/catalog/views/page/widgets/CatalogSpacesWidgetView.tsx index 31aa6a3..722589c 100644 --- a/src/components/catalog/views/page/widgets/CatalogSpacesWidgetView.tsx +++ b/src/components/catalog/views/page/widgets/CatalogSpacesWidgetView.tsx @@ -18,7 +18,7 @@ export const CatalogSpacesWidgetView: FC = props = const [ selectedGroupIndex, setSelectedGroupIndex ] = useState(-1); const [ selectedOfferForGroup, setSelectedOfferForGroup ] = useState(null); const { currentPage = null, currentOffer = null, setCurrentOffer = null, setPurchaseOptions = null } = useCatalog(); - const elementRef = useRef(); + const elementRef = useRef(null); const setSelectedOffer = (offer: IPurchasableOffer) => { diff --git a/src/components/friends/views/messenger/FriendsMessengerView.tsx b/src/components/friends/views/messenger/FriendsMessengerView.tsx index 6b3e761..0eaf484 100644 --- a/src/components/friends/views/messenger/FriendsMessengerView.tsx +++ b/src/components/friends/views/messenger/FriendsMessengerView.tsx @@ -14,7 +14,7 @@ export const FriendsMessengerView: FC<{}> = props => const { visibleThreads = [], activeThread = null, getMessageThread = null, sendMessage = null, setActiveThreadId = null, closeThread = null } = useMessenger(); const { report = null } = useHelp(); const { settings, translateOutgoing } = useTranslation(); - const messagesBox = useRef(); + const messagesBox = useRef(null); const followFriend = () => (activeThread && activeThread.participant && SendMessageComposer(new FollowFriendMessageComposer(activeThread.participant.id))); const openProfile = () => (activeThread && activeThread.participant && GetUserProfile(activeThread.participant.id)); diff --git a/src/components/game-center/views/GameStageView.tsx b/src/components/game-center/views/GameStageView.tsx index 06cd25f..6c6bea7 100644 --- a/src/components/game-center/views/GameStageView.tsx +++ b/src/components/game-center/views/GameStageView.tsx @@ -7,7 +7,7 @@ export const GameStageView = () => { const { gameURL, setGameURL } = useGameCenter(); const [ loadTimes, setLoadTimes ] = useState(0); - const ref = useRef(); + const ref = useRef(null); useEffect(() => { diff --git a/src/components/navigator/NavigatorView.tsx b/src/components/navigator/NavigatorView.tsx index 313e4db..332bbbd 100644 --- a/src/components/navigator/NavigatorView.tsx +++ b/src/components/navigator/NavigatorView.tsx @@ -31,7 +31,7 @@ export const NavigatorView: FC<{}> = props => const [ needsSearch, setNeedsSearch ] = useState(false); const { searchResult = null, topLevelContext = null, topLevelContexts = null, navigatorData = null, navigatorSearches = null } = useNavigator(); const pendingSearch = useRef<{ value: string, code: string }>(null); - const elementRef = useRef(); + const elementRef = useRef(null); useNitroEvent(RoomSessionEvent.CREATED, event => { diff --git a/src/components/room/RoomView.tsx b/src/components/room/RoomView.tsx index a1bcec9..e2fb32d 100644 --- a/src/components/room/RoomView.tsx +++ b/src/components/room/RoomView.tsx @@ -10,7 +10,7 @@ import { RoomWidgetsView } from './widgets/RoomWidgetsView'; export const RoomView: FC<{}> = (props) => { const { roomSession = null } = useRoom(); - const elementRef = useRef(); + const elementRef = useRef(null); useEffect(() => { diff --git a/src/components/room/widgets/chat/ChatWidgetView.tsx b/src/components/room/widgets/chat/ChatWidgetView.tsx index ccab140..4ef9d43 100644 --- a/src/components/room/widgets/chat/ChatWidgetView.tsx +++ b/src/components/room/widgets/chat/ChatWidgetView.tsx @@ -11,7 +11,7 @@ export const ChatWidgetView: FC<{}> = props => { const { chatMessages = [], setChatMessages = null, chatSettings = null, getScrollSpeed = 6000 } = useChatWidget(); const [ chatWindowEnabled ] = useChatWindow(); - const elementRef = useRef(); + const elementRef = useRef(null); const removeHiddenChats = useCallback(() => { diff --git a/src/components/room/widgets/object-location/ObjectLocationView.tsx b/src/components/room/widgets/object-location/ObjectLocationView.tsx index 0bd1a48..a9261de 100644 --- a/src/components/room/widgets/object-location/ObjectLocationView.tsx +++ b/src/components/room/widgets/object-location/ObjectLocationView.tsx @@ -14,7 +14,7 @@ export const ObjectLocationView: FC = props => { const { objectId = -1, category = -1, noFollow = false, ...rest } = props; const [ pos, setPos ] = useState<{ x: number, y: number }>({ x: -1, y: -1 }); - const elementRef = useRef(); + const elementRef = useRef(null); useEffect(() => { diff --git a/src/components/toolbar/ToolbarMeView.tsx b/src/components/toolbar/ToolbarMeView.tsx index 79fa576..db50105 100644 --- a/src/components/toolbar/ToolbarMeView.tsx +++ b/src/components/toolbar/ToolbarMeView.tsx @@ -11,7 +11,7 @@ export const ToolbarMeView: FC> = props => { const { useGuideTool = false, unseenAchievementCount = 0, setMeExpanded = null, children = null, ...rest } = props; - const elementRef = useRef(); + const elementRef = useRef(null); useEffect(() => {