window.open() 在反应应用程序中不起作用

zie*_*lah 0 javascript dom-events reactjs

我有一个如下所示的反应应用程序:我有一个按钮,单击它时它将打开一个弹出窗口,其中包含要打印的票证,单击处理程序从父组件传递到按钮,我希望完成相同的过程在父组件内部

export default class ParentComponent extends Component {
  openWindow = id => {
    window.open('/service/ticket/' + id + '/print')
  }

  submitPayment = () => {
    sendPayment(this.state.rawCommand.id, updatedCommand.payment) 
      .then(payment => {
        if (payment.needed > 0) { 
          toastr.success(dictionnary.acceptedPayment)
        } else {
          toastr.success(dictionnary.payee) 
          this.openWindow(updatedCommand.id)
        } 
      }

  render () {
    <Printer printTicket={this.openWindow} />
  }
}
Run Code Online (Sandbox Code Playgroud)

const Printer = ({printTicket, id}) => {
  const clickHandler = () => printTicket(id)

  return (
    <button onClick={clickHandler}>print</button>
  )
}
Run Code Online (Sandbox Code Playgroud)

问题是,当单击 Printer 组件中的按钮时,窗口会按预期打开,但是当从父组件调用 openWindow 单击处理程序时,什么也没有发生!

我检查了 chrome devtools 中的代码,该函数被调用,但弹出窗口未打开。

编辑 更多说明: 1- 该按钮打开一个带有票据的弹出窗口并打印它 2- 用户可以通过此按钮打印票据 3- 提交付款后,票据应自动打印

zie*_*lah 5

我找到了关于谷歌浏览器的解决方案:它阻止了弹出窗口!