Sunting: Dengan pengenalan Hooksitu mungkin untuk mengimplementasikan jenis siklus hidup perilaku serta negara dalam Komponen fungsional. Saat ini
Hooks adalah proposal fitur baru yang memungkinkan Anda menggunakan status dan fitur React lainnya tanpa menulis kelas. Mereka dirilis di React sebagai bagian dari v16.8.0
useEffecthook dapat digunakan untuk mereplikasi perilaku siklus proses, dan useStatedapat digunakan untuk menyimpan status dalam komponen fungsi.
Sintaks dasar:
useEffect(callbackFunction, [dependentProps]) => cleanupFunction
Anda dapat menerapkan kasus penggunaan Anda dalam kait seperti
const grid = (props) => {
console.log(props);
let {skuRules} = props;
useEffect(() => {
if(!props.fetched) {
props.fetchRules();
}
console.log('mount it!');
}, []); // passing an empty array as second argument triggers the callback in useEffect only after the initial render thus replicating `componentDidMount` lifecycle behaviour
return(
<Content title="Promotions" breadcrumbs={breadcrumbs} fetched={skuRules.fetched}>
<Box title="Sku Promotion">
<ActionButtons buttons={actionButtons} />
<SkuRuleGrid
data={skuRules.payload}
fetch={props.fetchSkuRules}
/>
</Box>
</Content>
)
}
useEffectjuga dapat mengembalikan fungsi yang akan dijalankan saat komponen dilepas. Ini dapat digunakan untuk berhenti berlangganan pendengar, meniru perilaku componentWillUnmount:
Misalnya: componentWillUnmount
useEffect(() => {
window.addEventListener('unhandledRejection', handler);
return () => {
window.removeEventListener('unhandledRejection', handler);
}
}, [])
Untuk membuat useEffectkondisional pada peristiwa tertentu, Anda dapat menyediakannya dengan array nilai untuk memeriksa perubahan:
Misalnya: componentDidUpdate
componentDidUpdate(prevProps, prevState) {
const { counter } = this.props;
if (this.props.counter !== prevState.counter) {
// some action here
}
}
Hooks Equivalent
useEffect(() => {
// action here
}, [props.counter]); // checks for changes in the values in this array
Jika Anda menyertakan larik ini, pastikan untuk menyertakan semua nilai dari lingkup komponen yang berubah seiring waktu (alat peraga, status), atau Anda mungkin akhirnya mereferensikan nilai dari render sebelumnya.
Ada beberapa kehalusan untuk digunakan useEffect; lihat API Here.
Sebelum v16.7.0
Properti komponen fungsi adalah mereka tidak memiliki akses ke fungsi siklus hidup Reacts atau thiskata kunci. Anda perlu memperluas React.Componentkelas jika ingin menggunakan fungsi siklus proses.
class Grid extends React.Component {
constructor(props) {
super(props)
}
componentDidMount () {
if(!this.props.fetched) {
this.props.fetchRules();
}
console.log('mount it!');
}
render() {
return(
<Content title="Promotions" breadcrumbs={breadcrumbs} fetched={skuRules.fetched}>
<Box title="Sku Promotion">
<ActionButtons buttons={actionButtons} />
<SkuRuleGrid
data={skuRules.payload}
fetch={props.fetchSkuRules}
/>
</Box>
</Content>
)
}
}
Komponen fungsi berguna ketika Anda hanya ingin merender Komponen tanpa memerlukan logika tambahan.