A React.js High-Order Component and decorator for parsing and resolving URLs inside your application.
npm i -S react react-urlimport { render } from 'react-dom';
import { URLProvider } from 'react-url';
import App from './containers/App';
const urls = {
profile: '/profile/:username/',
};
render(
<URLProvider urls={urls}>
<App />
</URLProvider>,
document.body,
);URLProvideris a High-Order Component.URLProviderexpect only one property namedurls.urlsshould be an object where the keys are the URLs names and the values are the unparsed url using the syntax of Express.js.
import React, { Component } from 'react';
import { connectURL } from 'react-url';
function mapURLToProps(getURL, props) {
return {
profileURL: getURL('profile', { username: props.username }),
};
}
@connectURL(mapURLToProps)
class UserData extends Component { ... }
export default UserData;- The
connectURLargument (mapURLToProps) it's optional. - If you don't supply it then it will add the
getURLfunction as a property. - The
mapURLToPropsfunction will receive thegetURLfunction andpropsobject as parameter and should return an object. - The
getURLfunction receive the URL name and an object with the parameters to use in it and return the parsed URL. - You can use it as a decorator (like the example above) or just as a function and send them the component to connect.
import { parser } from 'react-url';
const urls = {
profile: '/profile/:username/',
};
const profileURL = parser(urls, 'profile', {
username: 'sergiodxa',
});- This is a Low-Level API and is used internally for the
connectURLdecorator, it's not expected that you use it directly. parserreceive as arguments theurlsmap, the URL name and the options/parameters object.- It will return the final parsed url string.