多个反应应用程序在一个页面中,并保持它们的同步



我有基于电子商务的页面。整个页面不包含在单个react应用程序中。

页面的大部分静态内容是使用EJS在服务器端呈现的。在客户端上渲染后,我们用两个独立的react应用程序各自的状态初始化它们。

  • 购物车应用程序。(显示表示购物车中项目计数的计数(
  • 产品列表应用-产品列表应用程序呈现产品列表

每个产品项目都有一个添加到购物车按钮。当用户点击它时,我们需要立即更新购物车中的计数,而无需刷新页面。

现在我的问题是,是否有一种方法可以在不渲染整个页面的情况下实现这一点。下面是我的HTML标记。

<navbar>
<navbar-links/>
<div id="site-cart-app"></div> // this is where the cart react app is initialized.
</navbar>
<div id="product-list-app"></div> // this is where the product list app is initialized.

高级摘要-要在一个页面上同步多个React应用程序,您需要一个通用的数据源,如REDUX(我个人建议(和subscribe,以同步多个React应用程序中的REDUX Store,并相应地更新组件。

如何实现?(我对我的项目做了什么(

  1. 创建两个单独的react redux应用程序
  2. 制作Common存储和捆绑代码并运行

这看起来很简单,但事实并非如此。

我在实施过程中遇到的问题。

如何将React项目与常见的Redux Store和减速器分离。-为此,我使用了Redux动态模块库,该库允许我们对组件的负载进行单独的存储或减载。

我仍在做这件事,但请参考。这是我针对类似问题的git回购。

您可以通过多种方式解决这些问题

其中之一,您添加了一个服务,在那里您为add或Remove card项目编写代码请求,并在此处使用Rxjs Subject和Subscribe from card组件示例。

在您的Services.js中

import { Observable, Subject } from "rxjs";
export class CardService {
public static observable = new Subject();
}

在您的产品页面

import { CardService  } from ./services/CardService";
//trigger when click to add or remove Card item 
TollAdminService.observable.next({ cardItem, action });

在您的卡组件中

import { CardService  } from ./services/CardService";
// inside the component constructor like this
constructor(props) {
TollAdminService.observable.subscribe((cardItem: any, action: any) => {
//add your action code here...
}
}

也许它能帮助你解决问题

谢谢

您可以使用公共redux存储来维护购物车计数,两个应用程序都将使用该存储

相关内容

  • 没有找到相关文章

最新更新