import { matchPattern } from 'react-router' const routes = [ { pattern: '/one', fetch: () => { return Promise.resolve('one') } }, { pattern: '/two', fetch: () => { return Promise.resolve('two') } }, { pattern: '/three', fetch: () => { return Promise.resolve('three') } }, ] const fetchDataForRoute = (path) => { Promise.all( routes.filter(route => ( matchPattern(route.pattern, { pathname: path })) ).map(route => route.fetch()) ) } fetchDataForRoute('/one').then((data) => { // cache the data // render })