
Disclamer
Ini adalah terjemahan gratis dari artikel asli dari blog resmi. Mengapa gratis? Sebaliknya, karena aslinya mengandung terlalu banyak air dan referensi ke alasan untuk keputusan tertentu yang dibuat di masa lalu.
Tidak ada yang baru?
Rilis React ketujuh belas tidak biasa karena kurangnya fitur dan / atau fungsionalitas baru. Rilis ini difokuskan pada penambahan kemampuan untuk mengupdate project secara bertahap untuk versi utama library berikutnya di masa mendatang , yang relevan untuk project dengan basis kode yang besar.
Concurrent Mode 17 , , . () .
7 React " ". , . , - , , Context API, .
React 17 . React 17. .
: . . , (React 18, React 19), - lazy- React 17.
, (lazy-load) React. React 17.0.0-rc.0, , , React 16.8
React 17
, onClick, DOM-. document. , .
, , React , jQuery, . event.stopPropagation(): (propagation) , . React. Atom .
, document:
const rootNode = document.getElementById('root'); // <--
ReactDOM.render(<App />, rootNode);(SyntheticEvent Even Pooling)
17- , .
function handleChange(event) {
// 16 React event.persist()
setData(data => ({
...data,
// This crashes in React 16 and earlier:
text: event.target.value
}));
} , event.persist()
. Facebook . , - !
. React .
useEffect()
useEffect(() => {
// This is the effect itself.
return () => {
// This is its cleanup.
};
}); , , componentWillUnmount(), , , , , .
, - useLayoutEffect(), .
undefined
, .
undefined , React.forwardRef React.memo.
let Button = forwardRef(() => {
// We forgot to write return, so this component returns undefined.
// React 17 surfaces this as an error instead of ignoring it.
<button />;
});
let Button = memo(() => {
// We forgot to write return, so this component returns undefined.
// React 17 surfaces this as an error instead of ignoring it.
<button />;
});, stack trace . , , .
, Button , React- .
17- React , React-, , production-.
— , . , React Native for Web , .
17- React . - , , .
ReactTestUtils.SimulateNative . , .
Changelog
Versi baru React juga menyertakan 5 perubahan pada React, 37 perubahan pada React Dom, beberapa perubahan pada React DOM Server, satu perubahan pada React Test Rerender.
Bagaimana dengan Concurrent Mode?
Mode ini masih eksperimental. Di React ke- 17 telah memperbaiki banyak bug, menghapus beberapa unstable_metode, dan menambahkan yang baru. Masih terlalu dini untuk menggunakannya untuk produksi, tetapi itu pasti mungkin dan perlu untuk disodok. Misalnya, ada pustaka untuk bekerja dengan Firebase, reactfire , yang pengembangnya membuat versi utama bergantung pada Mode Bersamaan. Sayangnya repositori tersebut tampaknya ditinggalkan selama beberapa bulan terakhir. Semoga ini diperbaiki.