Javascript 在两个完全独立的组件之间处理数据

Javascript 在两个完全独立的组件之间处理数据,javascript,reactjs,Javascript,Reactjs,我正在重建旧的电子商务系统产品页面,并将其替换为用React编写的部分。 我不是重写整件事,而是一个组件一个组件地做,稍后在项目中,我将以更传统的方式连接它。 但现在只是一部分一部分 我目前正试图弄清楚如何在两个组件(ProductList和Cart)之间处理数据。这两个组件位于产品页面上完全不同的位置。 如果在ProductList中按Add to cart,我希望cart能够对该事件做出反应,并在cart中按Empty cart以触发ProductList中的更改 这些组件不会是同级的 应用

我正在重建旧的电子商务系统产品页面,并将其替换为用React编写的部分。 我不是重写整件事,而是一个组件一个组件地做,稍后在项目中,我将以更传统的方式连接它。 但现在只是一部分一部分

我目前正试图弄清楚如何在两个组件(ProductList和Cart)之间处理数据。这两个组件位于产品页面上完全不同的位置。 如果在ProductList中按Add to cart,我希望cart能够对该事件做出反应,并在cart中按Empty cart以触发ProductList中的更改

这些组件不会是同级的

应用程序的基本结构:

HTML:

<!DOCTYPE html>
<html>
<head>
    <title>Test</title>
</head>
<body>
    <div>
        <!-- Lots of other stuff, PHP etc... -->
        <div id="list"></div>
        <!-- Lots of other stuff, PHP etc... -->
    </div>
    <!-- Lots of other stuff, PHP etc... -->
    <div id="cart"></div>
    <script src="static/js/app.js"></script>
</body>
</html>

试验
Javascript组件:

import React from "react";
import ReactDOM from "react-dom";

import List from "./components/List";
import Cart from "./components/Cart";

ReactDOM.render(
<List />,
document.getElementById('list')
);

ReactDOM.render(
    <Cart />,
    document.getElementById('cart')
);
从“React”导入React;
从“react dom”导入react dom;
从“/components/List”导入列表;
从“/components/Cart”导入购物车;
ReactDOM.render(
,
document.getElementById('list')
);
ReactDOM.render(
,
document.getElementById('cart')
);

由于两者都不是共同祖先的后代,我该如何以良好的方式处理组件通信呢?

一种方法是使用Redux库, 它可能有一个用于购物车商店的减速器, 列表和购物车组件应该用与购物车商店连接的容器组件包装

此外,您还可以使用react 16.3版本中添加的上下文API


我想说,对于这个问题,使用redux的解决方案更可取。

当两个同级组件需要交互时,一种常见的技术是。例如,您可以创建一个
App
组件来保存购物车和产品列表,呈现
cart
list
,并将数据作为道具向下传递。@Thole是的,这就是方法。但很抱歉,我忘了指定组件根本不是兄弟。我将把它编辑成问题。好的。如果你不能提升国家,引进一个国家管理图书馆可能是个好主意,比如或。