我有一个名为Display()
的函数,它从Google日历中获取事件,并返回一个包含要呈现在屏幕上的元素列表(每个元素与滑块相关联)的列表(请参见Display()
函数的返回语句),并按照这里所示进行渲染。因此,每个元素都带有一个Remove
按钮,以便我可以使用位于Display()
函数内部的hideMe()
函数从页面中删除不需要的元素。hideMe()
函数似乎起作用了,但它会删除页面上的所有元素,如此处所示。因此,我正在努力找出应该修复什么,以便当我单击Remove
按钮时,它只删除与该remove
按钮相关联的元素和滑块。我对React和JavaScript还不太熟悉,请帮忙解决。非常感谢您的任何帮助。
function Display() {
const isMounted = useRef(true);
const [items, saveItems] = useState([]);
const [visible, setVisible] = useState(true);
const [fading, setFading] = useState(false);
useEffect(() => {
return () => {
isMounted.current = false;
};
}, []);
useEffect(() => {
(async () => {
const items = await fetchItems();
//Do not update state if component is unmounted
if (isMounted.current) {
saveItems(items);
}
})();
}, []);
function hideMe() {
setFading(true);
setTimeout(() => setVisible(false), 650);
}
return (
<Tab.Pane attached={false}>
<h5>Rate stress level for each event</h5>
<br/>
{items.map(item => (
<div key={item.id} isvisible={!fading}
style={visible ? null : { display: "none" }}>
<Typography id="discrete-slider-restrict" gutterBottom>
{item}
<button onClick={hideMe}>Remove</button>
</Typography>
<PrettoSlider aria-label="pretto slider" defaultValue={98} step={null}marks={stresslevel}/>
</div>
))}
</Tab.Pane>
)
}