Introduction
Wouter is a minimalist routing library for React and Preact applications, designed to provide essential routing functionality with a small footprint. It is particularly useful for developers who want a simple and efficient way to handle routing without the complexity of larger libraries like React Router. Wouter embraces React Hooks, offering a straightforward API that is both intuitive and easy to integrate into projects.
Installation
To get started with Wouter, you can install it using npm or yarn:
npm install wouter
or
yarn add wouter
Basic Usage
Wouter provides a simple API with components such as Link
and Route
, which are similar to those in React Router but with a more minimalistic approach.
Here’s a basic example of setting up routes in a React application using Wouter:
import React from 'react';
import { Link, Route, Switch } from 'wouter';
const App = () => (
<div>
<nav>
<Link href="/about">About</Link>
<Link href="/users/John">Profile</Link>
</nav>
<Switch>
<Route path="/about">
<div>About Us</div>
</Route>
<Route path="/users/:name">
{(params) => <div>Hello, {params.name}!</div>}
</Route>
<Route>
<div>404: No such page!</div>
</Route>
</Switch>
</div>
);
export default App;
In this example, the Switch
component ensures that only the first matching Route
is rendered, providing a clean and efficient way to manage your application’s routing.
Advanced Usage
For more complex routing needs, Wouter offers hooks like useLocation
and useRoute
, which provide greater control over navigation and route matching.
Using useLocation
The useLocation
hook allows you to access and manipulate the current location in your application:
import React from 'react';
import { useLocation } from 'wouter';
const CurrentLocation = () => {
const [location, setLocation] = useLocation();
return (
<div>
<p>The current page is: {location}</p>
<button onClick={() => setLocation('/new-location')}>Go to New Location</button>
</div>
);
};
export default CurrentLocation;
Using useRoute
The useRoute
hook is useful for checking if the current path matches a specific pattern:
import React from 'react';
import { useRoute } from 'wouter';
const UserProfile = () => {
const [match, params] = useRoute('/users/:id');
return match ? <div>User ID: {params.id}</div> : <div>User not found</div>;
};
export default UserProfile;
Conclusion
Wouter is an excellent choice for developers who need a lightweight and efficient routing solution for React applications. Its minimalist design and intuitive API make it easy to use, especially for projects that do not require the extensive features of larger routing libraries. Whether you’re building a small app or a larger project, Wouter provides the flexibility and simplicity needed to manage your application’s navigation effectively.