reactjs - React Router Tarihçede RouteParams
React 17.0.2 kullanıyorum ve yönlendirmeleri şöyle tanımladım:
export const PATH = {
editProduct: '/edit-product/:productId'
}
export const routes = [
{
path: PATH.editProduct,
render: (props) => <Product {...props}/>
}
]
export const useRoutes = () => ({ PATH, routes });
Rotalar ardından 'react-router-dom' sürümü: ^5.2.0 ile kullanılır
Routeparam kullanmayan bazı önceki yollar history.push(PATH.somePath); kullandı ve çalışıyor, ama bazı bileşenlerde react routerParam kullanmak istiyorum.
Beğen :
history.push({pathname: PATH.editProduct, routerParam: {productId: "2"} });
Önceki yollar routeparams ile PATH değişkeni kullanılmadan, bunun yerine history.push('/edit-product/' + productId); gibi string yazarak geçirilmişti. PATH değişkenlerini yeniden kullanmak istiyorum, ama bunun akıllıca nasıl yapılabileceğini çözemedim.
Eğer history.push metodunda PATH.editProduct kullanırsam, routeparam'i de birlikte yerleştiriyor, örneğin /edit-product/:productId, bu benim aradığım davranış değil. History'de routeparam'ler için bir parse yöntemi var mı?
Cevap #1
react-router-dom içinde generatePath yardımcı fonksiyonu vardır.
import { generatePath } from "react-router-dom";
const path = generatePath(PATH.editProduct, {
productId: 1
});
history.push(path);
https://reactrouter.com/web/api/generatePath
