Je travaille actuellement sur un projet basé sur CMS.
Pour lesquels j'utilise le passe-partout universel React Redux d'Erikras
J'ai vraiment besoin de suggestions sur la gestion du routage dynamique
Prenons un scénario simple depuis le passe-partout ...
Dans routes.js
<Route path="about" component={About}/>
<Route path="login" component={Login}/>
<Route path="survey" component={Survey}/>
<Route path="widgets" component={Widgets}/>
data.js
export const data = [
{id: 1, property: 'Dashboard', link: '/'},
{id: 2, property: 'Login', link: '/login'},
{id: 3, property: 'About Us', link: '/About'},
];
maintenant, disons sur la base du rôle de l'utilisateur, les propriétés des données json changeront
disons nouvelle propriété: est
{id: 4, property: 'test page', link: '/test'}
Lorsque react rendra les composants, comment il connaîtra le lien de route .. car il n'est pas défini dans les routes.js
Je ne parviens pas à la mettre en œuvre correctement
Nous avons besoin d'une barre latérale composée d'un contenu de menu spécifique selon le rôle de l'utilisateur.
Disons que nous construisons un système de réservation, il peut y avoir différents rôles d'utilisateur comme administrateur, mode de maintenance, rôle d'assistant.
Donc, un rôle différent aura des propriétés différentes, nous devons donc générer le menu sur la base de celui-ci, car les propriétés différeront certainement selon le rôle de l'utilisateur.
Merci!!
D'après votre exemple, le composant à rendre pour /test
url? Je suppose que c'est la valeur de la clé property
, non?
Vous pouvez faire quelque chose comme ceci:
<Route path="/:page" component={Page}/>
Il vous permettra de rendre le composant Page
pour chaque URL, qui commence à partir de /
et ce composant aura l'URL de la page à l'intérieur this.props.routeParams.page
. Il vous permet de trouver le composant nécessaire dans Page#render
:
render() {
const url = this.props.routeParams.page;
const PageComponent = data.find(page => page.link === url).property;
render <PageComponent />;
}
Vous pouvez générer des itinéraires dynamiquement, mais je ne sais pas si cela fonctionne (vous pouvez le vérifier). Vous devez juste remplacer cette partie:
<Route path="about" component={About}/>
<Route path="login" component={Login}/>
<Route path="survey" component={Survey}/>
<Route path="widgets" component={Widgets}/>
avec
data.map(page => <Route path={page.link} component={page.property} key={page.id}/>)