React render fonksiyonunda dinamik href nasıl oluşturulur?


105

Bir gönderi listesi oluşturuyorum. Her gönderi için href dizesinin bir parçası olarak gönderi kimliğiyle bir bağlantı etiketi oluşturmak istiyorum.

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>
    );

Nasıl her sonrası href 's vardır ki yapacağız /posts/1, /posts/2vs?

Yanıtlar:


192

Dize birleştirme kullanın:

href={'/posts/' + post.id}

JSX sözdizimi, dizelerin veya ifadelerin ({...})değer olarak kullanılmasına izin verir . İkisini de karıştıramazsınız. Bir ifadenin içinde, adından da anlaşılacağı gibi, değeri hesaplamak için herhangi bir JavaScript ifadesini kullanabilirsiniz.


1
çok mantıklı. Teşekkürler!
Connor Leech

1
harika çalışıyor, ancak babel gibi bir derleyici kullanıyorsanız, şablon dizeleri daha zariftir.
HussienK

Ya bir mailto ise?
tallgirltaadaa

@tallgirltaadaa: fark yok. JSX / JavaScript, dizenin gerçek değerini önemsemez.
Felix Kling


2

Felix'in cevabına ek olarak,

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

çok iyi çalışır. Bu güzel çünkü hepsi tek bir dizede.


0

Lütfen bunu deneyebilir misin?

Post.link gibi bir postada başka bir öğe oluşturun ve ardından render işlevine postayı göndermeden önce bağlantıyı ona atayın .

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

Bu nedenle, yukarıdaki render işlevi yerine aşağıdaki olmalıdır.

return <li key={post.id}><a href={post.link}>{post.title}</a></li>
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.