Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.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
Javascript 防止客户端性能上的重复操作_Javascript_Reactjs_Redux - Fatal编程技术网

Javascript 防止客户端性能上的重复操作

Javascript 防止客户端性能上的重复操作,javascript,reactjs,redux,Javascript,Reactjs,Redux,我有一个React/Redux/SSR应用程序。现在,我的应用程序的工作原理如下: 用户访问某个url,浏览器向前端服务器(Node.js)发送请求 前端服务器从后端服务器(Ruby)获取此url的所有必要数据,并生成html,然后使用填充的窗口响应用户的浏览器。使用适当的Redux存储状态预加载\u STATE 用户的浏览器呈现收到的html并运行bundle.js脚本,该脚本是React应用程序。它使用“在之前填充”窗口。\u预加载\u状态\u初始化应用程序(此时操作将再次运行) 我想防止在

我有一个React/Redux/SSR应用程序。现在,我的应用程序的工作原理如下:

  • 用户访问某个url,浏览器向前端服务器(Node.js)发送请求
  • 前端服务器从后端服务器(Ruby)获取此url的所有必要数据,并生成html,然后使用填充的
    窗口响应用户的浏览器。使用适当的Redux存储状态预加载\u STATE
  • 用户的浏览器呈现收到的html并运行bundle.js脚本,该脚本是React应用程序。它使用“在
    之前填充”窗口。\u预加载\u状态\u
    初始化应用程序(此时操作将再次运行)
  • 我想防止在客户端上第一次渲染时执行重复操作,因为所有操作都已在服务器上完成

    我尝试的内容:在第一次渲染后,我在客户端上删除
    窗口。\u preload\u STATE\u
    并在
    窗口时运行操作。\u preload\u STATE\u
    仅存在。但删除
    窗口。_预加载\u状态
    在应用程序初始化之前执行,因此操作仍会运行


    我怎样才能得到想要的行为?欢迎提出任何想法。

    您是否有机会在开发模式下使用React

    在开发模式下,如果无法将SSR代码与前端代码匹配,React将进行投诉。在我看来,你也会遇到类似的情况


    如果不是这样,那么在开始时运行哪些操作?

    您是否有机会在开发模式下使用React

    在开发模式下,如果无法将SSR代码与前端代码匹配,React将进行投诉。在我看来,你也会遇到类似的情况


    如果不是这样,开始时运行的操作是什么?

    你能提供相关代码吗?@Aruna这很不方便,因为应用程序被分散到几个文件中:app.jsx-express server、index.jsx-whole app entrypoint、store.js用于配置store、app.jsx-main component和其他文件,如actions、reducer。你想看什么具体的文件?你能提供相关的代码吗?@Aruna这很不方便,因为app被分为几个文件:app.jsx-express server、index.jsx-whole app entrypoint、store.js用于配置store、app.jsx-main component和其他文件,如actions、reducer。你想看到什么具体文件?是的,我可以在开发模式下运行应用程序。标记没有任何问题,两边都一样。看,我有一个项目列表页面。在这个页面上有一个项目组件,它运行loadProjects操作(这里是对后端的请求)来更新存储中的项目。在服务器端,我跳过操作,因为我必须首先加载所有数据,然后用这些数据创建存储。问题是第一次在项目页面上出现冗余请求(我已经在服务器上获得了数据)。但当我离开并再次访问项目页面时,我希望运行操作以获取实际的项目数据。我希望我解释清楚mmm,所以在服务器端,您没有执行操作,因为您是通过createStore注入数据的,明白了吗。现在浏览器不再跳过这个动作,而是直接联系Ruby获取数据。你为什么需要采取行动?您总是在SSR部件中组成页面SSR仅用于呈现第一页。它可以是/projects或/projects/:id或其他,这并不重要。在该用户的浏览器直接与后端交互以获取实际数据之后,很抱歉,我无法理解问题所在:(是的,我可以在开发模式下运行应用程序。标记没有任何问题,两边都一样。看,我有一个项目列表页面。在这个页面上有一个项目组件,它运行loadProjects操作(这里是对后端的请求)更新存储区中的项目。在服务器端,我跳过操作,因为我必须首先加载所有数据,然后使用此数据创建存储区。问题是第一次在“项目”页面上有冗余请求(我已在服务器上获取数据).但是当我离开并再次访问项目页面时,我想运行操作来获取实际的项目数据。我希望我解释清楚MMM,所以在服务器端,您没有执行操作,因为您通过createStore注入数据,明白了。现在浏览器没有跳过该操作,而是直接与Ruby联系以获取数据。W你为什么需要这个动作?你总是在SSR部件中组成页面SSR仅用于呈现第一个页面。它可以是/projects或/projects/:id或其他,这无关紧要。在该用户的浏览器直接与后端交互以获取实际数据之后,对不起,我无法理解问题是什么:(