🐊Putout plugin adds ability to migrate to latest version of react router. Not bundled.
npm i putout @putout/plugin-react-router -D
{
"rules": {
"react-router/v6-convert-switch-to-routers": "on",
"react-router/v6-convert-component-to-element": "on",
"react-router/v7-split-multi-segment-route": "on"
},
"plugins": ["react-router"]
}
ReactRouter v6
uses Routers
instead of Switch
. Check out in 🐊Putout Editor.
const {Route, Switch} = require('react-router');
const routes = () => (
<Switch>
<Route exact path="/login" component={Login}/>
<Route exact path="/join" component={Join}/>
</Switch>
);
const {Route, Routes} = require('react-router');
const routes = () => (
<Routes>
<Route exact path="/login" component={Login}/>
<Route exact path="/join" component={Join}/>
</Routes>
);
ReactRouter v6
uses element
instead of component
. Check out in 🐊Putout Editor.
<Route path="/" component={Home}/>;
<Route path="/" element={<Home/>}/>;
Split any multi-segment splat
<Route>
into a parent route with the path and a child route with the splat.(c) reactrouter.com
Checkout in 🐊Putout Editor:
<Routes>
<Route path="/" element={<Home/>}/>
<Route path="dashboard/*" element={<Dashboard/>}/>
</Routes>;
createBrowserRouter([{
path: '/',
element: <Home/>,
}, {
path: 'dashboard/*',
element: <Dashboard/>,
}]);
<Routes>
<Route path="/" element={<Home/>}/>
<Route path="dashboard">
<Route path="*" element={<Dashboard/>}/>
</Route>
</Routes>;
createBrowserRouter([{
path: '/',
element: <Home/>,
}, {
path: 'dashboard',
children: [{
path: '*',
element: <Dashboard/>,
}],
}]);
MIT