【发布时间】:2021-08-24 02:59:20
【问题描述】:
我有一个基于函数的 React 视图,它有一个基于本地存储中项目的存在加载的模式:
function myView() {
...
function HelpModal() {
const [show, setShow] = useState(false);
useEffect(()=>{
let pop_status = localStorage.getItem('this-page-modal');
if(!pop_status){
setShow(true);
}
},[])
if(!setShow) return null;
const handleClose = () => {
localStorage.setItem('this-page-modal', '1');
setShow(false);
};
const handleShow = () => setShow(true);
return (
<>
<Button variant="primary" onClick={handleShow}>
Button text
</Button>
<Modal show={show} onHide={handleClose}>
<Modal.Body>
<p>Hey! This is a modal.</p>
</Modal.Body>
<Modal.Footer>
<Button variant="primary" onClick={handleClose}>
Close
</Button>
</Modal.Footer>
</Modal>
</>
);
}
return (
<div>
<Container style={{marginTop: "1em"}}>
<Row>
<Col><h1>My View</h1></Col>
<Col><span style={{float: "right"}}> <HelpModal /></span></Col>
</Row>
</Container>
</div>
);
}
问题:当我加载页面时,模态闪烁并加载了 2 或 3 次。
如何让它只加载一次?任何建议将不胜感激。
【问题讨论】:
-
useEffect没有多次加载,你使用[]作为第二个参数,这意味着它只会在构造时被调用,所以有人多次调用你的模态,但你的useEffect不是问题。
标签: javascript reactjs use-effect