首页 > 解决方案 > 如何使 React.useContext 在 SweetAlert 2 模态中工作?

问题描述

我正在使用带有https://github.com/sweetalert2/sweetalert2-react-content增强器的 Sweet Alert 2 在我的应用程序中创建一些具有功能的模态,但我发现将数据传递到 swal 模态的唯一方法是通过使用道具:

    MySwal.fire({
      html: <SaveDialog schema={schema} reload={refetch}/>
    });

在应用程序中,我经常使用 useContext 钩子,实际上,我传递给模态的那些道具已经暴露在上下文中。当尝试在模态中呈现的反应组件上使用 useContext 时,它不会获得上下文中的任何值,因为 swal 模态在反应组件树之外呈现,从而使上下文提供程序在树中更高的位置无法访问模态组件。

我知道可以像这样包装组件:

<SomeProvider><SaveDialog schema={schema} reload={refetch}/></SomeProvider>

这适用于模态本身内部的东西,但这只是提供者的另一个实例,它没有以任何方式链接到前一个实例,因此也没有正确的值。我也知道不可能将 swal 模态渲染为树中现有组件的子级(这与模态是不同的 ReactDOM.render 有关)。有什么方法可以让上下文提供者访问模态组件?

标签: reactjsreact-hookssweetalert2

解决方案


推荐阅读