import { NavigateFunction } from 'react-router-dom';
declare function useNavigate(): NavigateFunction;
interface NavigateFunction {
(
to: To,
options?: {
replace?: boolean;
state?: any;
relative?: RelativeRoutingType;
}
): void;
(delta: number): void;
}
출처 : https://ultimatecourses.com/blog/programmatically-navigate-react-router
import {useNavigate} from 'react-router-dom'
const navigate = useNavigate();
React Hook "useNavigate" cannot be called at the top level. React Hooks must be called in a React function component or a custom React Hook function.
navigate (타입) 참조값을 함수에서 사용할 경우, 타입스크립트는 해당하는 타입을 요구한다, 이때, import { NavigateFunction } from 'react-router-dom'; 을 통해서 navigate 변수의 타입을 정의하자!
import { useNavigate } from 'react-router-dom';
...중략...
const navigate = useNavigate();
...중략...
<button onClick={() => deleteItem(hotel.id, navigate)}>Delete Item</button>
export const deleteItem = async (
id: string | undefined,
navigate: any // <======== 여기!!!!
) => {
const document = doc(firestore, `items/${id}`);
await deleteDoc(document);
navigate('/');
};
};
import { NavigateFunction } from 'react-router-dom';
...중략....
export const deleteItem = async (
id: string | undefined,
navigate: NavigateFunction // <======== 여기!!!!
) => {
const document = doc(firestore, `items/${id}`);
await deleteDoc(document);
navigate('/');
};
};