React: Memicu ketegangan dari kait

Dibuat pada 14 Feb 2019  ·  3Komentar  ·  Sumber: facebook/react

Apakah Anda ingin meminta fitur atau melaporkan bug ?

Pertanyaan. Ini mungkin juga terkait dengan #14563.

Bagaimana kita memicu ketegangan dari sebuah kail?

Mengapa pertanyaan itu muncul?

Pertanyaan ini muncul selama penggunaan react-i18next . Pembaruan terbaru react-i18next menyediakan useTranslation -hook yang memungkinkan memperoleh terjemahan saat ini dan juga akan memicu pemuatan ruang nama terjemahan yang belum dimuat (seperti pemecahan kode).

Untuk menangani kasus di mana terjemahan belum dimuat, useTranslation -hook memberikan janji untuk memicu Suspense , yang sebenarnya sangat rapi karena terintegrasi secara rapi dengan fitur reaksi yang ada!

Namun, jika Anda menggunakan lebih banyak kait setelah memanggil useTranslation -hook, kait lain ini tidak akan dirender jika useTranslation memberikan janji. Setelah terjemahan dimuat, kait tidak akan terlempar lagi dan reaksi akan memberi Anda peringatan merah besar bahwa jumlah kait telah berubah.

Contoh

const Component = () => {
  const [t] = useTranslation('translationnamespace');
  const [count, setCount] = useState(0);

  return (
    <div onClick={() => setCount(count + 1)}>
      {t('The count is:')} {count}
    </div>
  );
};

Jika translationnamespace belum dimuat, useTranslation akan muncul, menyebabkan useState tidak dapat dirender. Setelah translationnamespace dimuat, useTranslation tidak akan dilempar lagi, yang menyebabkan useState dirender yang menyebabkan peringatan.

Kasus Umum

Jadi pertanyaan ini tidak hanya berlaku untuk react-i18next saja, tetapi berlaku untuk semua kait yang ingin memicu ketegangan. Bagaimana kita akan melakukan ini, dan bagaimana ini akan terintegrasi dengan "Aturan Kait" saat ini yang menyatakan bahwa kait tidak boleh dirender secara kondisional?

Hooks Suspense Bug

Komentar yang paling membantu

Saya pikir kami benar-benar memperbaikinya di 16.8.2. Silakan buka yang baru dengan kasing yang mereproduksi jika tidak.

Semua 3 komentar

Sepertinya kesalahan bahwa kesalahan menyala jika terjadi penangguhan. Afaik itu tidak disengaja.

Baiklah, senang tahu!

Mungkin juga ingin mendokumentasikan bahwa itu adalah perilaku yang ditentukan untuk tidak membuat semua kait jika terjadi penangguhan. Tapi saya kira ini akan dilakukan setelah penangguhan secara resmi diperkenalkan sebagai mekanisme pengambilan data.

Saya pikir kami benar-benar memperbaikinya di 16.8.2. Silakan buka yang baru dengan kasing yang mereproduksi jika tidak.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat