我该如何解决在React应用程序中使用react-modal包时控制台中出现的以下警告:
Warning: 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"
>
...
}
}
其中...
表示未显示的代码。
一切都运行良好,但当模态框打开时,我的控制台会出现以下警告:
index.js:2177 警告:react-modal:未定义应用程序元素。请使用
Modal.setAppElement(el)
或设置appElement={el}
。这是必需的,以便屏幕阅读器在打开模态框时不会看到主内容。虽然不建议,但您可以通过设置ariaHideApp={false}
来选择退出。
在react-modal文档中,我能找到的仅有以下内容:
应用程序元素
应用程序元素允许您指定应该隐藏的应用程序部分(通过aria-hidden),以防止辅助技术(如屏幕阅读器)阅读模态框内容之外的内容。
如果您正在进行服务器端渲染,则应使用此属性。
它可以通过以下方式指定:
DOM元素
Modal.setAppElement(appElement);
查询选择器-如果传入类,则使用找到的第一个元素。
Modal.setAppElement('#your-app-element');
不幸的是,这没有帮助!我无法弄清楚el
应该表示什么。
以下是我尝试添加到我的模态框组件中的许多属性变化:
`appElement={el}`,
`appElement="root"` where `root` is the id that my App component is injected into
`appElement={'root'}`
`appElement="div"`,
`appElement={<div>}`,
`appElement={"div"}`
我还尝试过在src/index.js
中调用Modal.setAppElement('root');
,其中root
是我的App
组件注入的根元素,而index.js是我这样做的地方。