小编Pra*_*til的帖子

导航到其他页面时获取 navigator.block 不是一个函数

在 React 项目中,我创建了一个弹出模式,当任何用户尝试在输入字段中进行任何更改并导航到其他屏幕时,都会显示该模式。它没有按预期工作,因此浏览了很多帖子来找到解决方案,但没有运气。请参考下面的代码:

useBlock.js

import {useContext, useEffect} from 'react';
import { UNSAFE_NavigationContext as NavigationContext} from 'react-router-dom';
const useBlocker = (blocker, when = true) => {
    const navigator = useContext(NavigationContext).navigator
    useEffect(() => {
        if (!when)
            return;
        const unblock = navigator.block((tx) => { <-- This line is creating an issue
            const autoUnblockingTx = {
                ...tx,
                retry() {
                  unblock();
                  tx.retry();
                },
              };
            blocker(autoUnblockingTx);
        });
        return unblock;
    }, [navigator, blocker, when]);
}

export default useBlocker
Run Code Online (Sandbox Code Playgroud)

useCallbackPrompt.js

import { useCallback, useEffect, useState } from 'react'; …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs react-router-dom

8
推荐指数
2
解决办法
8739
查看次数

标签 统计

javascript ×1

react-router-dom ×1

reactjs ×1