Comments (2)
Usually, IDs are strings, not integers. What you basically demand is, that because you chose to use numeric IDs, the router should handle the conversion for you.
URL parameters are automatically extracted parts of an URL - which is a string. The router should not change that and make any assumptions about your code. The next project breaks because of that change, because they assumed to receive strings instead of numbers.
I would suggest to leave the mechanic as-is and do any conversion on your side; if its even needed.
from wouter.
I agree with @Paratron, if we decide to convert these parameters automatically, this might create a non-obvious behaviour, when for example the parameter was intended to be a string, but in some rare cases it will be converted to integer.
There was a similar thread in React Router and seems like they have decided to avoid this possible complexity remix-run/react-router#6097. Ideally this can be solved with types, by IMO the design of the library becomes too overloaded.
Even in Rails which was designed to be intuitive and convention-based they don't provide an automatic conversion. What they do instead is following:
def show
user_id = params[:id] # this is a string
# but this works fine, since ActiveRecord#find accepts both strings and integers
user = User.find(user_id)
end
@haggen But if you still want to have this in your project really bad I would suggest overriding a default matcher function like this:
import { Route } from "wouter";
import makeMatcher from "wouter/matcher";
const autoCastIntegers = (objectOrNull) => {
...
}
const matcherWithTransformedParams = (transformFn) => {
const originalMatcher = makeMatcher();
return (pattern, path) => {
const [match, params] = originalMatcher(pattern, path);
return [match, transformFn(params)]
}
}
<Router matcher={matcherWithTransformedParams(autoCastIntegers)}>
...
</Router>
(haven't tested the code)
Thanks for suggesting this feature, but we are likely not going to implement this. Closing the issue.
from wouter.
Related Issues (20)
- Route not accessible from multiple routers with different base HOT 1
- Bun install invalid hook call HOT 4
- Router don't work with Preact (10.18.1) HOT 3
- wouter-preact: Params with typescript? HOT 2
- How to add params in a nesting route? HOT 3
- v2.12.1 npm package is out of sync with v2.12.1 tag HOT 1
- v3.0.0-rc.1: When use hash router, Ctrl+click on <Link>, new window is opened with wrong url HOT 3
- Potential `useSearch` bug not triggering updates when used with `urql` HOT 9
- [Bug] Can't match default <Route>Not found</Route> when Router inside Switch HOT 3
- (?) Hash routing with no prefix slash index.html#/example/path/ HOT 3
- useSearch unsafe parameter decoding HOT 3
- v3.0.0-rc.2 decodeUriComponent is called before route match, breaking links with urlencoded slash (%2F) HOT 2
- v3.0.0-rc.1: `useRoute` should allow `nest` option just like `<Route />` HOT 1
- Suggestion: `<Link>` should always render an `<a>` (or at least have the option to do so) HOT 5
- Accessing nested params with `useParams` HOT 8
- Nested routing broken by intermediate component HOT 2
- Exit animation with framer-motion HOT 7
- How to use V3 with Jest? HOT 3
- [BUG] `useHashLocation` not syncing with state HOT 3
- Docs don't say how to install; no readme on NPM page HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from wouter.