UIkit 的 Modal 在 React 中无法正常打开怎么办?
我在 React 项目里引入了 UIkit,想用它的 Modal 组件,但点击按钮完全没反应,控制台也没报错。我按照文档加了 data-uk-modal 属性,也引入了 JS 文件,是不是哪里写错了?
这是我的代码:
import UIkit from 'uikit';
export default function MyModal() {
return (
<>
<button className="uk-button uk-button-default" type="button" data-uk-toggle="target: #my-modal">
打开弹窗
</button>
<div id="my-modal" data-uk-modal>
<div className="uk-modal-dialog">
<button className="uk-modal-close-default" type="button" data-uk-close></button>
<div className="uk-modal-header">标题</div>
<div className="uk-modal-body">内容</div>
</div>
</div>
</>
);
}
最直接的办法是放弃 data 属性,用 JS 手动控制:
核心改动就几点:
用 useEffect 在组件挂载后调用 UIkit.modal() 初始化。按钮的点击改成 onClick 手动调用 show(),关闭按钮同理用 hide()。这样 UIkit 才能正确绑定事件。
如果你非想用 data 属性也不是不行,但得在 useEffect 里手动触发 UIkit 的事件绑定,而且容易出各种奇怪问题,不如直接用 JS 方法省心。