Tidak dapat menghantar nilai harta komponen ReactJS kepada komponen lain
P粉647504283
2023-08-16 00:30:36
<p>Bagaimana untuk mendapatkan nilai terkini objek dimensi yang dikemas kini dalam komponen Navbar.js dalam komponen Home.js? Saya cuba menghantar fungsi panggil balik sebagai prop daripada Home.js kepada Navbar.js (memandangkan Home.js ialah komponen induk Navbar.js), tetapi saya tidak boleh menyimpan nilai keadaan dimensi yang baru dikemas kini dalam Navbar.js. Jika saya melepasi keadaan dimensi sebagai pergantungan useEffect, ia menyebabkan gelung tak terhingga. tolong saya. </p>
<pre class="brush:php;toolbar:false;">**Komponen Home.js**
const Laman Utama = () =>
const [heightNav, setHeightNav] = useState(0);
useEffect(() => {
console.log(heightNav);
}, [heightNav]);
kembali (
<div>
<Navbar
setHeight={(h) =>
setHeightNav(() => h);
}}
/>
</div>
);
};
**Komponen Navbar.js**
const Navbar = ({ setHeight }) =>
const refContainer = useRef();
const [dimensi, setDimensions] = useState({ width: 0, height: 0 });
useEffect(() => {
jika (refContainer.current) {
setDimensions(() => {
kembali {
lebar: refContainer.current.offsetWidth,
ketinggian: refContainer.current.offsetHeight,
};
});
setHeight(dimensi.height);
}
}, []);
kembali (
<Container ref={refContainer}>
</Bekas>
);
};</pre>
Cuba bar navigasi ini: