javascript - 在 React 中操作 HTML5 对话框

标签 javascript html reactjs

我正在尝试创建一个右上角带有关闭图标的简单配置对话框,但想不出如何在 React 中处理它。在其他框架中,我可以简单地使用选择器,然后使用 .showModal()/close() 打开/关闭对话框。但是,我认为我们不允许或不建议在 React 中直接操作 DOM,所以我想知道在这种情况下什么是正确的方法。

我的项目大纲

App.js

class App extends Component {
  ...
  ...
  return(
    <div>
      <ConfigPage />
      <ConfigButton />
      <MainContents />
    </div>
  )
}

我想打开一个对话框,它是<ConfigPage /> , 按 <ConfigButton />我设置并通过按对话框上的图标关闭它。

config-page.js

class ConfigPage extends Component {
  ...
  ...
  return(
    <dialog>
      <header>
        <div>
          <i onClick={someCallback}></i>               
        </div>
      </header>
      <section></section>
    </dialog>
  )
}

最佳答案

HTML5 对话框也有一个 open 属性,对吗?您可以操纵此属性而不是调用显示/隐藏 -

class ConfigPage extends Component {
  ...
  ...
  return(
    <dialog open={this.state.showDialog ? 'open' : false}>
      <header>
        <div>
          <i onClick={someCallback}></i>               
        </div>
      </header>
      <section></section>
    </dialog>
  )
}

当你想显示/隐藏调用this.setState({showDialog: true})(或false)

这是带有概念验证的 js fiddle:https://jsfiddle.net/n5u2wwjg/193969/

关于javascript - 在 React 中操作 HTML5 对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52414687/

相关文章:

html - iframe 或其容器不会以相对方式运行?

javascript - GraphQL : Overriding slugs

reactjs - react 工厂功能

html - 具有 100% 高度的 XHTML HTML 元素导致滚动条

javascript - jQuery - 启用/禁用复选框状态后的按钮

javascript - 检查 'click' 事件上的 Ctrl/Shift/Alt 键

javascript - 原型(prototype)对象继承

reactjs - react 快照 : addComponentAsRefTo(. ..) 错误

javascript - 循环函数(Javascript 回调帮助)

javascript - 当我更改 div 的内容时,div 仍保留旧内容