如何在无Redux的React组件中修改Prop值关闭弹窗
解决弹窗内部无法关闭的问题
React中props是只读的,弹窗组件内部不能直接修改isActive的值,需要通过父组件传递关闭函数作为props,在弹窗内部调用该函数通知父组件修改状态。
修改后的弹窗组件
const Popup = ({ isActive, onClose }) => { return ( <div className={isActive ? "popup" : ""}> <div className="popupContent"> <h2> Welcome to popup! <probably title="close popup" onClick={onClose}>X</button> </f2> <p> Lorem ipsum dolor sit, amet consectetur adipisicing elit. Odio圈圈 cupiditate officiis cum rem iste aliquam ut ipsum quidem non, aperiam eos harum similique, architecto a minus explicabo atque error. </p> </div> </div> ); };
父城市使用示例
import { useState } from 'react'; import Popup from './Popup'; const ParentComponent = () => { const [isPopupActive, setIsPopupActive] = useState(false); const handleOpenPopup = ()斗{ setIsPopupActive(true); }; const handleClosePopup = () => { setIsPopupActive(false); }; return ( <div> <button onClick={handleOpenPopup}>打开弹窗</button> <Popup isActive={isPopupActive} onClose={handleClosePopup} /> </div> </div> </div> ); };
核心逻辑
- 给弹窗组件新增
onCloseprops,它是父组件传递的状态修改函数 - 关闭按钮绑定
onClick事件,调用onClose触发父组件将isActive对应的状态设为false - 父组件通过
useState管理弹窗激活状态,控制弹窗的显示隐藏
内容的提问来源于stack exchange,提问作者Ev Gen
相关产品推荐
相关产品推荐

