React Redux 在 Modal 中的使用

2024-04-29

我正在 React 中学习 Redux。我在 React 中使用 Redux 进行 Modal 开发。我的代码如下

render() {
    return (
      <Modal id="addressModal" open={this.props.controlModal} onClose={this.props.action}>
        <Provider store={store}>
          {this.props.addresObj ? (
            <Modal.Header>Address Details</Modal.Header>
          ) : (
            <Modal.Header>Insert Address</Modal.Header>
          )}
          <Modal.Content>
              <ModalElement
                update={this.update}
                element={this.props.addresObj}
                errors = {this.state.errors}
                update_state_photo={this.update_state_photo}
                address={this.props.address}
                action={this.props.action}
              />
          </Modal.Content>

          <Modal.Actions>
            {this.props.addresObj ? (
              <Button
                positive
                icon="checkmark"
                labelPosition="right"
                onClick={this.closeModal}
                content="OK"
              />
            ) : (
              <Button
                positive
                icon="checkmark"
                labelPosition="right"
                onClick={this.insertAddress}
                content="Save"
              />
            )}
          </Modal.Actions>
        </Provider>
      </Modal>
    );
  }
}

(我用过吗<Provider store={store}>正确吗?)在子组件中我无法使用 Redux 语法。就像我用这个一样export default connect()(EditableRow);我收到错误(组件执行未在该组件处完成,执行转发)。如果我使用这个语法export default EditableRow;我没有收到任何错误。

可能是我无法正确表达我的问题。

这是我的仓库https://github.com/afoysal/mern/blob/master/client/src/components/ModalBody.js https://github.com/afoysal/mern/blob/master/client/src/components/ModalBody.js

我遇到以下错误。

如何在 React Modal 中使用 Redux ?


这里的问题是由使用引起的反应门户 https://reactjs.org/docs/portals.html

门户提供了一种一流的方法来将子组件渲染到存在于父组件 DOM 层次结构之外的 DOM 节点中。

Portal 允许在另一个 DOM 下渲染 React 元素。经过简化,这看起来像

const ComponentA = ReactDOM.createPortal(
    <CoolComponent />,
    document.getElementById('banner'),
)

const ComponentB = ReactDOM.createPortal(
    <SuperCoolComponent />,
    document.getElementById('footer'),
)

所以一般来说ComponentA不会看到Provider of ComponentB.

你可以看看这个page https://dev.to/mickmister/sharing-context-with-react-portals-4dki,但是它并没有完全描述您面临的问题。

如果看<Modal>组件源,它使用React.createPortal https://reactjs.org/docs/portals.html自我呈现,失去父母的养育者。

我看到的一种解决方法

  1. Extract store来自合作伙伴的<Provider/>
  2. 创建新的<Provider>刚过<Modal> usage.

    // ModelBody.js
    import { Provider, ReactReduxContext } from 'react-redux';
    
    //...
    render() {
        return (
            <ReactReduxContext.Consumer>
                {((ctx) => (
                    <Modal id="addressModal" open={this.props.controlModal} onClose={this.props.action}>
                        <Provider store={ctx.store}>  /* make store available in Portal */
                            {this.props.addresObj ? (
                                <Modal.Header>Address Details</Modal.Header>
                            ) : (
                                <Modal.Header>Insert Address</Modal.Header>
                            )}
                        /* other code from Model.js */
                        </Provider>
                    </Modal>
               )).bind(this) // Dont forget to bind this
           }
       </ReactReduxContext.Consumer>
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

React Redux 在 Modal 中的使用 的相关文章

随机推荐

  • redis 阻塞直到 key 存在

    我是 Redis 新手 想知道是否有办法能够await get通过它的键来获取值 直到该键存在 最小代码 async def handler data await self fetch key async def fetch key ret
  • 将预训练模型从 tfhub 转换为 tflite

    我正在尝试转换openimages v4 ssd mobilenet v2 https tfhub dev google openimages v4 ssd mobilenet v2 1到 tflite 使用 pip3 install te
  • JavaScript 中的 function($) 是什么意思?

    我意识到 只是命名指向 jQuery 对象的变量的约定 也是 document getElementById 的函数 但是 function 意味着什么吗 编辑 我其实是想说 function jQuery 抱歉造成混乱 但感谢您的回答 一
  • dmesg 和 /var/log/kern.log 之间的区别

    我正在修改kvm模块 并在内核代码中添加了printk语句 运行虚拟机后 printk为我提供了错误地址和有关客户操作系统的其他信息 我需要根据此信息生成统计信息 当我使用 dmesg 时 我只能看到错误地址 在内核空间中 即它们的地址高于
  • 警告:implode() [function.implode]:传递的参数无效

    我收到以下错误 警告 implode function implode 在第 1335 行的 wp content themes mytheme functions php 中传递的参数无效 at function my get tags
  • 如何平滑过渡 CSS 背景图片?

    主要的解决方案是 只需抛出一个加载屏幕 直到页面加载完毕 但我的目标是构建能够快速呈现基础知识的页面 无需加载屏幕 然后在图像和精美功能准备就绪时进行转换 所以我会等到它加载完毕 然后淡入 或者我会加载一个非常低分辨率的版本 然后在准备好时
  • PyCharm 未使用环境变量进行更新

    当我使用vim更新我的环境变量 在 bashrc PyCharm 不会立即获取更新 我必须关闭程序 源 bashrc再次 然后重新打开 PyCharm 有没有办法让 PyC harm 自动获取更改 或无需关闭 当任何进程创建时 它都会从其父
  • 获取自分离父分支以来的提交日志,包括父分支的最新提交

    我正在尝试创建一个快速的 bash 函数 该函数返回 oneline自当前分支从其父分支分支以来的每次提交的日志 以及包括先前提交的行 这是我到目前为止所拥有的 stolen from another Stack Overflow ques
  • 如何获取一维标量数组作为学说 dql 查询结果?

    我想从拍卖表的 id 列中获取一组值 如果这是一个原始 SQL 我会写 SELECT id FROM auction 但是当我在 Doctrine 中执行此操作并执行时 em gt createQuery SELECT a id FROM
  • 为什么 Java Swing html 字体渲染看起来这么糟糕?

    为了显示具有多种样式的复杂多行标签 我使用了 Swing 的 html 渲染功能 但最终得到了非常糟糕的字体渲染 我尝试明确设置字体系列 infoLabel setText span style font family Tahoma My
  • Json.NET:将嵌套数组反序列化为强类型对象

    我正在编写客户端应用程序 它应该处理服务器响应 响应采用 JSON 格式 我决定使用 Json NET 来反序列化它们 我无法简化或修改这些响应 在服务器端 此特定 JSON 响应的特殊困难在于不同的对象类型位于同一数组中 哈希值和文件数组
  • Numpy 提取网格数据的子集

    在我的应用程序中 我有一个从 meshgrid 命令获得的值矩阵及其坐标 经度 纬度 我想根据经度和纬度限制提取该矩阵的特定子区域 我已经尝试过这个解决方案 但它不起作用 我需要三个矩阵作为输出 一个用于数据 另外两个用于网格 Lons L
  • 应用程序突然崩溃 - 致命执行引擎错误 (7A0BC59E) (80131506)

    完全随机 我们的应用程序突然在其生产环境中崩溃 该应用程序在 Windows XP 和 net Framework 3 5 sp1 上运行 在应用程序中 我们提供 WCF 服务并使用串行端口 当应用程序崩溃时 它会在应用程序日志中留下消息
  • React Native 中的平台特定组件

    我很确定这很简单 但我不太明白如何将它们结合在一起 目前我的应用程序在 iOS 中运行良好 但我使用了一些与 Android 不兼容的控件
  • java中的引用传递[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我是java新手 我尝试搜索很多我的
  • OpenCV 的 findHomography 产生无意义的结果

    我正在制作一个程序 使用 OpenCV 2 43 中的 ORB 跟踪功能 我遵循并使用了建议从这里 https stackoverflow com questions 9919505 how can i extract fast featu
  • 如何解决发布 .NET Core 时出现的 PFX 签名不支持错误

    我一直在尝试使用 PFX 文件对程序集进行签名 一切正常 我在 Visual Studio 中访问了属性 签名 但每当我运行点网发布命令 我收到此错误 C Program Files dotnet sdk 2 1 201 Microsoft
  • 如何查看合并到合并提交中的提交?

    If my feature branch被合并到my main branch 我怎样才能看到合并了哪些提交my feature branch git log abc123 abc123显示合并到合并提交中的提交abc123 创建一个git
  • 在 Java Web 应用程序中处理 X-FORWARDED-PROTO 标头

    任何人都可以指导我与X 转发 原型 https developer mozilla org en US docs Web HTTP Headers X Forwarded Proto部署到 Apache Tomcat 的 Java Web
  • React Redux 在 Modal 中的使用

    我正在 React 中学习 Redux 我在 React 中使用 Redux 进行 Modal 开发 我的代码如下 render return