Javascript window.open()don';在react应用程序中不工作
我有一个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 = (
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>
)
}