Je suis en train de rendre une liste de messages. Pour chaque article, je souhaite rendre une balise d'ancrage avec l'identifiant de l'article dans la chaîne href.
render: function(){
return (
<ul>
{
this.props.posts.map(function(post){
return <li key={post.id}><a href='/posts/'{post.id}>{post.title}</a></li>
})
}
</ul>
);
Comment puis-je le faire pour que chaque message ait un href de /posts/1
, /posts/2
etc.?
Utilisez la concaténation de chaînes:
href={'/posts/' + post.id}
La syntaxe JSX permet d'utiliser des chaînes ou des expressions ({...})
en tant que valeurs. Vous ne pouvez pas mélanger les deux. Dans une expression, vous pouvez, comme son nom l'indique, utiliser n'importe quelle expression JavaScript pour calculer la valeur.
Vous pouvez aussi utiliser la syntaxe de backtick ES6
<a href={`/customer/${item._id}`} >{item.get('firstName')} {item.get('lastName')}</a>
Pourriez-vous s'il vous plaît essayer ceci?
Créez un autre élément dans le post tel que post.link puis assignez le lien avant l'envoi post à la fonction de rendu.
post.link = '/posts/+ id.toString();
Donc, la fonction de rendu ci-dessus devrait être suivie à la place.
return <li key={post.id}><a href={post.link}>{post.title}</a></li>