一尘不染

反应依赖注入或类似?

angularjs

在Angular.js中,可以使用依赖注入。我做了一些浏览,但找不到它的实现。React是否有类似的东西?


阅读 220

收藏
2020-07-04

共1个答案

一尘不染

React具有IoC,但没有像Angular这样的DI容器概念。就是说,没有使容器知道如何创建对象并传递依赖项,而是通过在实例化组件时将props传递给组件来显式传递它们<MyComponent items={this.state.items} />

虽然将依赖项传递为道具在React世界中并不常见。道具通常用于将数据传递到组件,而不是服务/存储。但是,没有什么阻止您传递服务/商店甚至组件作为道具(当然也没有错)。

React具有a的概念,a
context是整个组件树的共享对象。因此,顶层组件可以说其子树的上下文有一个对象,其中包含诸如UserStore,MessageStore等之类的东西。然后,组件层次结构中更深的组件可以说它希望在其上下文中访问UserStore。如此说来,该组件可访问UserStore,而不必将其从顶部组件显式传递到底部,并且请求它的组件不知道它是如何创建/传递给它的。

它具有DI容器的优点,您可以在其中放置对象创建的中央位置,该位置可以向下传递。这是上下文的一个很好的介绍:https : //www.tildedave.com/2014/11/15/introduction-
to-contexts-in-react-
js.html

上下文仍然是React尚未公开的功能,这意味着它的API可以在React的任何后续版本中进行更改,因此您可能需要稀疏使用它,直到它被编写了文档。

2020-07-04