Довольно странный аргумент насчет тестирования. Я так понимаю, имеються ввиду ситуации, когда необходимо протестировать компонент который использует хуки из react-router. Однако, специально для таких случаев, в react-router есть createRoutesStub, а в более ранних версиях MemoryRouter
В приведенном коде useDerivedState использование useEffect нежелательно, так как может привести к лишним перерисовкам и другим неприятным багам. Заменить useEffect можно так:
function useDerivedState<T>(propValue: T) {
const [state, setState] = useState(propValue);
const [prevState, setPrevState] = useState(propValue);
if (prevState !== propValue) {
setState(propValue);
setPrevState(propValue);
}
return [state, setState] as const;
}
Довольно странный аргумент насчет тестирования. Я так понимаю, имеються ввиду ситуации, когда необходимо протестировать компонент который использует хуки из react-router. Однако, специально для таких случаев, в react-router есть
createRoutesStub, а в более ранних версияхMemoryRouterhttps://reactrouter.com/start/framework/testing
https://v5.reactrouter.com/web/api/MemoryRouter
В приведенном коде useDerivedState использование useEffect нежелательно, так как может привести к лишним перерисовкам и другим неприятным багам. Заменить useEffect можно так:
Имеется ввиду android? Он же опенсорсный