Next.js: Server tidak merender dengan benar saat menggunakan `dangerouslySetInnerHTML`

Dibuat pada 5 Nov 2016  ·  3Komentar  ·  Sumber: vercel/next.js

Latar belakang

Saya menggunakan Prismic.io sebagai CMS dan saya mengambil data ini dalam getInitialProps() . Konten sudah diformat sebelumnya sebagai HTML jadi saya menggunakan dangerouslySetInnerHTML .

Perilaku yang Diharapkan

Output dari render() identik ketika dijalankan di server dan di klien.

Perilaku Sebenarnya

Output render() di server salah dan tidak cocok dengan klien.

Render dari server:

image

Render dari klien

image

Perbedaannya adalah konten tidak memiliki gaya yang tepat di server karena node DOM tidak bersarang dengan benar.

DOM dari server:

image

DOM dari klien:

image

Kode yang relevan

const htmlFor = (type) => ({__html: this.props[type]})
<Article heading="Devotional" html={true} >
   {htmlFor('devotional')}
</Article>

dan

const Article = ({heading, children, date, link, style, html}) => (
  <article
    className="mv3 mv4-m mv5-l measure"
    style={style}
  >
    <header>
      <h1 className="f3 f2-ns mt0 lh-title i garamond bb bw3 b--gold">
        {heading}
      </h1>
    </header>
    { html
      ? <p className="lh-copy" dangerouslySetInnerHTML={children} />
      : <p className="lh-copy" >{children}</p>
    }

    <footer>
      { date
        ? <p className="f6 i">{date}</p>
        : null
      }
      {link
        ? <a href="#" className='link dim mid-gray bb b--gold'>
            {link}
          </a>
        : null
      }
    </footer>
  </article>
)

Info lebih lanjut

Penerapan ini dan /_src bersifat publik di sini: https://thefaithnet-ynikfpghwu.now.sh/

Komentar yang paling membantu

@flybayer terima kasih telah melaporkan. Saya bisa saja salah, tetapi melewati situs Anda melalui validator HTML memberi saya kesalahan inihttps://validator.w3.org/nu/?doc=https%3A%2F%2Fthefaithnet-ynikfpghwu.now.sh%2F Saya pikir karena dalam HTML bersarang tag p tidak valid. Bisakah Anda mencoba menggunakan div alih-alih p ?

Semua 3 komentar

@flybayer terima kasih telah melaporkan. Saya bisa saja salah, tetapi melewati situs Anda melalui validator HTML memberi saya kesalahan inihttps://validator.w3.org/nu/?doc=https%3A%2F%2Fthefaithnet-ynikfpghwu.now.sh%2F Saya pikir karena dalam HTML bersarang tag p tidak valid. Bisakah Anda mencoba menggunakan div alih-alih p ?

@impronunciable Wow, itu dia!

Tangkapan yang bagus, dan terima kasih banyak atas bantuan Anda!

Senang itu berhasil!

Pada Minggu, 6 November 2016, 11:57 Brandon Bayer [email protected]
menulis:

@impronunciable https://github.com/impronunciable Wow, itu dia!

Tangkapan yang bagus, dan terima kasih banyak atas bantuan Anda!


Anda menerima ini karena Anda disebutkan.

Balas email ini secara langsung, lihat di GitHub
https://github.com/zeit/next.js/issues/213#issuecomment -258693902, atau bisukan
benang
https://github.com/notifications/unsubscribe-auth/AAKHp5EvRuw2GOjOViKL0MjKr0Vrt65sks5q7gbtgaJpZM4KqaPT
.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat