React Router获得Prompt或history.block的结果

时间:2018-03-05 16:52:35

标签: javascript reactjs dialog react-router react-router-v4

我在离开页面之前使用React-Router的Prompt来显示确认对话框。他们使用history package中的history.block实施了提示,该history.block使用了浏览器的默认对话框。问题在于许多浏览器都会显示"阻止此页面创建其他对话框"选项,当用户点击此选项时,任何启动“提示”对话框的操作都将被完全忽略(单击时没有任何反应)。

我尝试实施一种解决方法,要求我获取提示的结果,或者获得history.block的结果。有没有办法在用<p><button data-rid="<? $r['id']; ?>" class="cart-button btn btn-lg btn-block btn-outline-primary" type="button">Add to Cart</button></p> 创建的对话框上做出选择后立即执行操作?

1 个答案:

答案 0 :(得分:3)

您可以选择不使用提示,而自己使用history.block方法来执行一些相关操作,例如创建自定义弹出窗口/模式以警告用户是否尝试返回。不要忘记在卸载时或使用任何路由方法之前取消阻止它。

var hasDuplicate = false;
var index = 0;
foreach(var element in CompleteScancodeList)
{
    if(element == originalRow.Cells[1].Value.ToString() && index != originalRow.Index)
    {
        hasDuplicate = true;
        break;
    }
    index++;
}

if (hasDuplicate)
{
    //Do something
}