当您选择不使用 Flux/Redux 时,您可以这样做:
创建一个应该包装所有其他组件的外部组件。该组件也称为高阶组件或控制器视图。这个组件应该使用一个 HTTP 库来与你的微服务进行通信(我个人喜欢Axios)。我建议您创建一个包装 Axios 的客户端 API 对象。您的高阶组件可以引用此客户端 API,因此它与 HTTP 库和诸如此类的东西无关。我还将window
在dev
mode 中的对象上放置此客户端 API 的引用,以便您可以window.clientApi.fetchSomething()
在其中Chrome console
进行操作并使调试更容易。
让所有其他组件(客舱,AvatarBox和NewsStream)控制。如果你不熟悉这个概念,这意味着他们通过props接收他们需要的一切并且他们避免保持状态。这些组件不应该调用微服务本身。这是高阶组件的责任。为了具有交互性,这些组件应该接收事件处理程序作为props的功能。
这个对吗?它将提供干净的责任管理模型,但使用 http 请求加载每个组件的内容会产生性能问题
您可以通过不允许每个组件直接联系微服务来避免性能问题。如果您的高阶组件编译了所有需要的信息并尽可能少地进行 HTTP 调用,那么您应该完全可以使用这种方法。
通常建议使用 Flux/Redux,但如果您选择退出,这就是如何去做。