Redux如何在ajax完成后打开一个新窗口

时间:2016-01-08 11:32:35

标签: javascript reactjs redux

这是我的问题:

我在表单上有一个保存按钮。单击保存按钮时,它应通过ajax发送表单数据。当ajax调用成功时,应该打开一个新窗口。

我遇到的问题是这个(我正在使用React + Redux):

//inside the component class
handleSubmit = (e) => {
    this.props.dispatch( // calls ajax )
}


//inside the ajax action
dispatch => {
    fetch(...).then(response => {
        if (res.status >= 200 && res.status < 300) {
            window.open(...)
        }
    })
}

window.open()置于ajax调用中的问题是新窗口将被视为被chrome和FF阻止的弹出窗口。

我认为我应该将window.open()放在handleSubmit内以防止浏览器阻止它。但是,如何在dispatch内确定handleSubmit是否已成功完成?或者是否有其他地方我可以致电window.open()而不被阻止?

1 个答案:

答案 0 :(得分:3)

一旦承诺到达foo,AJAX请求已完成,因为承诺现已解决,发出另一个触发window.open的操作。

private void button_Click(object sender, RoutedEventArgs e)
    {
        var currentWindow = new Window();
        currentWindow.Show();
    }