如何使用 react-modal 包在 React 应用程序的控制台中修复此警告:
警告:react-modal:未定义 App 元素。请使用
Modal.setAppElement(el)
或设置appElement={el}
我还没有成功弄清楚el
应该是什么。
上下文:在我的 App.js 根组件文件中:
...
import Modal from 'react-modal';
...
class App extends Component {
...
render(){
...
<Modal
className="modal"
overlayClassName="overlay"
isOpen={foodModalOpen}
onRequestClose={this.closeFoodModal}
contentLabel="Modal"
>
...
}
}
其中...
表示未显示代码。
一切正常,但是当 Modal 打开时,我的控制台中会出现以下警告:
index.js:2177 警告:react-modal:未定义 App 元素。请使用
Modal.setAppElement(el)
或设置appElement={el}
。这是必需的,以便屏幕阅读器在打开模式时看不到主要内容。不建议这样做,但您可以通过设置选择退出ariaHideApp={false}
。
在react-modal 文档中,我只能找到以下内容:
App 元素 app 元素允许您指定应用程序中应隐藏的部分(通过 aria-hidden),以防止屏幕阅读器等辅助技术读取模态内容之外的内容。
如果你在做服务器端渲染,你应该使用这个属性。
可以通过以下方式指定:
DOM元素
Modal.setAppElement(appElement);
query selector - uses the first element found if you pass in a class.
Modal.setAppElement('#your-app-element');
不幸的是,这没有帮助!我无法弄清楚el
应该代表什么。
以下是我尝试添加到我的 Modal 组件的许多属性变体中的一些:
`appElement={el}`,
`appElement="root"` where `root` is the id that my App component is injected into
`appElement={'root'}`
`appElement="div"`,
`appElement={<div>}`,
`appElement={"div"}`
我也尝试过从Modal.setAppElement('root');
inside调用,我的组件被注入 的根元素src/index.js
在哪里,而 index.js 就是我这样做的地方。root
App