Wie erstelle ich dynamische Href in der React-Render-Funktion?

Lesezeit: 2 Minuten

Ich mache eine Liste von Beiträgen. Für jeden Beitrag möchte ich ein Anker-Tag mit der Beitrags-ID als Teil der Href-Zeichenfolge rendern.

render: function(){
    return (
        <ul>
            {
                this.props.posts.map(function(post){
                    return <li key={post.id}><a href="https://stackoverflow.com/posts/"{post.id}>{post.title}</a></li>
                })
            }
        </ul>
    );

Wie mache ich das, damit jeder Beitrag href’s von hat /posts/1, /posts/2 etc?

Verwenden Sie die Zeichenfolgenverkettung:

href={"https://stackoverflow.com/posts/" + post.id}

Die JSX-Syntax erlaubt entweder die Verwendung von Zeichenfolgen oder Ausdrücken ({...}) als Werte. Sie können nicht beides mischen. Innerhalb eines Ausdrucks können Sie, wie der Name schon sagt, einen beliebigen JavaScript-Ausdruck verwenden, um den Wert zu berechnen.

  • sehr sensibel. Vielen Dank!

    – Connor Blutegel

    22. Juli 2015 um 19:11 Uhr

  • funktioniert großartig, aber wenn Sie einen Compiler wie babel verwenden, sind Template-Strings eleganter.

    – HussienK

    29. September 2016 um 14:31 Uhr

  • Was ist, wenn es ein Mailto ist?

    – großmädchentaadaa

    17. Mai 2018 um 18:51 Uhr

  • @tallgirltaadaa: kein Unterschied. JSX / JavaScript kümmert sich nicht um den tatsächlichen Wert der Zeichenfolge.

    – Felix Klinge

    18. Mai 2018 um 23:11 Uhr

Benutzer-Avatar
Nat

Sie können auch die Backtick-Syntax von ES6 verwenden

<a href={`/customer/${item._id}`} >{item.get('firstName')} {item.get('lastName')}</a>

Weitere Informationen zu es6-Vorlagenliteralen

  • damit dies funktioniert, ist es notwendig, `and not’ zu verwenden?

    – Joe Lloyd

    26. Mai 2016 um 14:28 Uhr

  • Ja, der Backtick ist eine neue es6-Syntax für die Zeichenfolgeninterpolation. Meine Antwort wurde mit einem Link aktualisiert

    – Nat

    26. Mai 2016 um 14:48 Uhr


Zusätzlich zu Felix’ Antwort,

href={`/posts/${posts.id}`}

würde auch gut funktionieren. Das ist schön, weil es alles in einer Saite ist.

Könntest du das bitte versuchen?

Erstellen Sie ein weiteres Element in der Post, z post.link weisen Sie ihm dann vor dem Senden den Link zu Post zur Renderfunktion.

post.link = '/posts/+ id.toString();

Daher sollte stattdessen die obige Renderfunktion folgen.

return <li key={post.id}><a href={post.link}>{post.title}</a></li>

1257640cookie-checkWie erstelle ich dynamische Href in der React-Render-Funktion?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy