
Product
Introducing Tier 1 Reachability: Precision CVE Triage for Enterprise Teams
Socket’s new Tier 1 Reachability filters out up to 80% of irrelevant CVEs, so security teams can focus on the vulnerabilities that matter.
react-router-proxy-loader
Advanced tools
Based on react-proxy-loader, adapted for react-router
route handlers.
npm install react-router-proxy-loader
Which version to use depends on your version of react-router
react-router | react-router-proxy-loader |
---|---|
0.11.x and below | 0.1.x |
0.12.x | 0.2.x |
0.13.x | 0.3.x |
1.x | 0.4.x |
2.x and above | 0.5.x |
Use when requiring the handler
for a Route
, and the component will only be loaded when the route is rendered.
<Route path="user" component={require('react-router-proxy!./User.jsx')} />
Note that in react-router 0.x, willTransitionTo
and willTransitionFrom
will be proxied to the dynamically-loaded component.
If you have nested or sibling Routes that you want to be loaded together, you can name the components using ?name=chunkName
<Route path="user" component={require('react-router-proxy?name=user!./User.jsx')}>
<Route path="details" component={require('react-router-proxy?name=user!./UserDetails.jsx')}>
<Route path="settings" component={require('react-router-proxy?name=user!./UserSettings.jsx')}>
<Route path="other" component={require('react-router-proxy?name=user!./UserOther.jsx')}>
</Route>
This will cause the user
chunk to be loaded if any of the three user pages is loaded.
It will also mean that you won't need two separate calls for the base class and child class.
You can also use the standard Webpack placeholders in the name of your chunks.
<Route path="details" component={require('react-router-proxy?name=[name]!./UserDetails.jsx')}>
<Route path="settings" component={require('react-router-proxy?name=[name]!./UserSettings.jsx')}>
<Route path="other" component={require('react-router-proxy?name=[name]!./UserOther.jsx')}>
Would generate three chunks, exported in userdetails.js
, usersettings.js
and so on.
Using this approach allows you to setup your loader globally through an exclude/include rule in your webpack.config.js
.
To avoid conflicts it may be best to prefix your name
with a subfolder name, such as routes/
:
loaders: [
{
test: /\.js$/,
exclude: /src\/Pages/,
loader: 'babel',
},
{
test: /\.js$/,
include: /src\/Pages/,
loaders: ['react-router-proxy?name=routes/[name]', 'babel'],
}
],
This has the advantage of making your router a lot leaner:
<Route path="details" component={require('./UserDetails.jsx')}>
<Route path="settings" component={require('./UserSettings.jsx')}>
<Route path="other" component={require('./UserOther.jsx')}>
The generated files would then go into routes/userdetails
, routes/usersettings
etc.
FAQs
Dynamically load react-router components on-demand
We found that react-router-proxy-loader demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Product
Socket’s new Tier 1 Reachability filters out up to 80% of irrelevant CVEs, so security teams can focus on the vulnerabilities that matter.
Research
/Security News
Ongoing npm supply chain attack spreads to DuckDB: multiple packages compromised with the same wallet-drainer malware.
Security News
The MCP Steering Committee has launched the official MCP Registry in preview, a central hub for discovering and publishing MCP servers.