我目前正在尝试找到一种方法来显示自定义组件(如 Modal)以使用该Prompt
组件确认路由更改。
Promp
组件的默认行为是显示带有消息的确认对话框,如您在此示例中所见:React Router:防止转换。
注意:我正在使用该<BrowserRouter>
组件。
路由器有一个prop
named getUserConfirmation
,您可以使用它来自定义<Prompt>
组件的行为。
// this is the default behavior
function getConfirmation(message, callback) {
const allowTransition = window.confirm(message);
callback(allowTransition);
}
<BrowserRouter getUserConfirmation={getConfirmation} />;
我正在尝试做的事情:
父组件APP内部
我将confirm
状态设置为 true,以显示<Confirm>
组件
我正在尝试callback
将getConfirmation
函数从函数传递给<Confirm>
组件以调用它true
以允许转换,并false
阻止它。
true or false
如上所示,将在默认行为中调用回调。
function getConfirmation(message, callback) {
console.log("Inside getConfirmation function...");
setConfirmCallback(callback);
setConfirm(true);
// const allowTransition = window.confirm(message);
// callback(allowTransition);
}
这是App.js渲染的内容:
return (
<Router getUserConfirmation={getConfirmation}>
<AllRoutes />
{confirm && (
<Confirm confirmCallback={confirmCallback} setConfirm={setConfirm} />
)}
</Router>
);
似乎是什么问题:
该confirm
对话框似乎在那时阻止了该功能。所以callback
变量/参数仍在范围内。所以一切正常。
当我删除confirm
对话框时,该函数一直运行。当我点击<Confirm>
组件内的确认按钮时,callback
不再存在。
问题
有没有人知道使用react-router-dom
?
富国沪深
请问该如何使用 Jest 测试 React 组件?
如何使用 React Native 展示HTML内容?
react-router V4 组件嵌套
typescript+react 如何在不使用PropTypes的情况下,可以使导出的组件智能提示
相关分类