Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 回应SPA架构问题_Reactjs_Redux_React Redux - Fatal编程技术网

Reactjs 回应SPA架构问题

Reactjs 回应SPA架构问题,reactjs,redux,react-redux,Reactjs,Redux,React Redux,我不确定我的React SPA(帐户信息和设置页面)架构是否正确。你能给我一些反馈吗 创建了一个包装器组件。它用于保存状态并调用RESTAPI方法来更新其状态。我决定在最外层的父级中只保留一个应用程序状态 其他组件仅呈现状态道具,并使用回调(例如,在输入文本更改时)调用包装器组件方法来更改状态 现在我面临一个将回调传递给嵌套子对象的问题 假设我有5个嵌套的子组件,我必须通过道具将相同的回调传递给最里面的子组件以及道具5次。它好像坏了,有什么办法可以避免吗 Redux是否倾向于解决这些问题?Rea

我不确定我的React SPA(帐户信息和设置页面)架构是否正确。你能给我一些反馈吗

  • 创建了一个包装器组件。它用于保存状态并调用RESTAPI方法来更新其状态。我决定在最外层的父级中只保留一个应用程序状态

  • 其他组件仅呈现状态道具,并使用回调(例如,在输入文本更改时)调用包装器组件方法来更改状态

  • 现在我面临一个将回调传递给嵌套子对象的问题

    假设我有5个嵌套的子组件,我必须通过道具将相同的回调传递给最里面的子组件以及道具5次。它好像坏了,有什么办法可以避免吗


    Redux是否倾向于解决这些问题?React应用程序体系结构是否有任何企业标准?

    您的问题很常见,而且并不总是有简单的解决方案

    redux解决的问题:

    您的网站上有4个深度嵌套的
    SearchComponents
    ,在其中搜索应该会触发搜索,这是相同的搜索,但是
    handleSearch
    函数需要传递4次

    解决方案:
    SearchComponent
    连接到Redux存储,使用Redux修改当前正在搜索的内容的
    AppWideState

    同时,在当前的
    containerComponent
    中,您可以通过存储获取当前的搜索请求,并可以触发AJAX请求,因此您只需集中处理,而无需通过4次回调

    redux无法解决的问题(开箱即用)

    您从internet下载了一些很酷的输入字段,并希望在网站的4个位置使用它,但是您无法访问源代码,并且组件未连接到redux,看起来您根本无法使用第一种方法,但这只是部分正确。此时,您可以
    将下载的组件包装在自己的
    包装器组件
    周围,从而允许您再次使用第一种方法

    不完全受支持的内容

    前两个示例假设您的
    searchComponents
    触发了应用程序范围内的状态更改,其他人可以使用。但是,如果希望限制更新的范围,Redux不再是一个好的选择。
    我认为重要的是不要用只对一个组件感兴趣的东西污染全局appState,特别是如果它是父组件的话。
    虽然您可以将所有内容都连接到Redux,而无需同时进行回调,但这显然不是一个好的设计选择。

    在这方面,任何在全局范围内不需要但嵌套很深的东西都不能通过Redux解决,尤其是与react-Redux结合使用时,Redux确实可以帮助解决此类问题。每个组件都可以连接起来创建特殊道具,有些来自全局状态,有些来自于调度操作以更改全局状态。这正是我希望听到的。谢谢