Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript window.open()don';在react应用程序中不工作_Javascript_Reactjs_Dom Events - Fatal编程技术网

Javascript window.open()don';在react应用程序中不工作

Javascript window.open()don';在react应用程序中不工作,javascript,reactjs,dom-events,Javascript,Reactjs,Dom Events,我有一个react应用程序,看起来是这样的:我有一个按钮,当它被点击时,它将打开一个弹出窗口,其中有一张待打印的票证,点击处理程序从父组件传递到按钮,我希望在父组件内完成相同的过程 export default class ParentComponent extends Component { openWindow = id => { window.open('/service/ticket/' + id + '/print') } submitPayment = (

我有一个react应用程序,看起来是这样的:我有一个按钮,当它被点击时,它将打开一个弹出窗口,其中有一张待打印的票证,点击处理程序从父组件传递到按钮,我希望在父组件内完成相同的过程

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} />
  }
}
导出默认类ParentComponent扩展组件{
openWindow=id=>{
window.open('/service/ticket/'+id+'/print')
}
提交付款=()=>{
sendPayment(this.state.rawCommand.id,updatedCommand.payment)
。然后(付款=>{
如果(payment.needed>0){
toastr.success(承诺付款)
}否则{
toastr.success(受款人)
this.openWindow(updateCommand.id)
} 
}
渲染(){
}
}

const Printer=({printTicket,id})=>{
常量clickHandler=()=>printTicket(id)
返回(
打印
)
}
问题是,当单击打印机组件中的按钮时,窗口会按预期打开,但当从父组件调用openWindow单击处理程序时,不会发生任何事情

我检查了ChromeDevTools中的代码,调用了该函数,但弹出窗口没有打开

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

我找到了关于google chrome的解决方案:它阻止弹出!!!

我找到了关于google chrome的解决方案:它阻止弹出!!!

我希望在控制台上看到带有该代码的
commandId
的引用错误。这是关于非常感谢!您如何调用
submitPayment
?submitPayment作为道具传递给另一个组件,当它被调用时,它执行一个ajax调用,返回一个承诺,当承诺得到解决时,它调用这个.openWindow。'但是当从父组件调用openWindow单击处理程序时,什么都没有发生',在哪里在父组件而不是子组件中调用它的代码?我希望在控制台上看到带有该代码的
commandId
的引用错误。这是问题中的一个输入错误。谢谢!您如何调用
submitPayment
?submitPayment作为道具传递给另一个组件,当它被调用时,它会执行ajax调用它返回一个承诺,当该承诺被解析时,它调用此.openWindow。“但是当从父组件调用openWindow单击处理程序时,什么都没有发生”,调用它的代码在父组件而不是子组件中的何处?
const Printer = ({printTicket, id}) => {
  const clickHandler = () => printTicket(id)

  return (
    <button onClick={clickHandler}>print</button>
  )
}