react能实现依赖注入吗

WBOY
Lepaskan: 2022-04-27 11:24:01
asal
2190 orang telah melayarinya

react能实现依赖注入。实现方法:1、利用props实现依赖注入,例如“function welcome(props){return...}”;2、利用context实现依赖注入;3、利用InversifyJS等依赖注入库实现依赖注入。

react能实现依赖注入吗

本教程操作环境:Windows10系统、react17.0.1版、Dell G3电脑。

react能实现依赖注入吗

React能实现依赖注入

下面几个常见的代码,其实都应用了依赖注入的思想,我们来看几个例子:

1、使用 props 允许依赖注入

function welcome(props) { return 

Hello, {props.name}

; }
Salin selepas log masuk

welcome 组件通过接收 props 然后生成 html,别惊讶,我们最常用的 props 其实就是应用了依赖注入的思想。

2、使用 context 是实现依赖注入的另一种方法

function counter() { const { message } = useContext(MessageContext); return 

{ message }

; }
Salin selepas log masuk

由于 context 是沿着组件树向下传递的,我们可以使用组件内部的 hooks 来提取到它。

3、只使用 jsx 也能实现依赖注入

const ReviewList = props => (         );
Salin selepas log masuk

perPage 参数被传递给 组件,然后组件通过 REST API 获取远程数据。

但是, 组件并不会直接渲染数据,相反,它把渲染数据的重任交给了子组件 组件的渲染依赖于 是设置这种依赖关系的调用者。

但是,这些策略可能对小型项目有所帮助。在一些大型项目中往往我们需要更灵活的扩展,除了这些基础的应用之外,我们还需要更好地支持依赖注入。

我们来看几个扩展 React 依赖注入支持的库。

InversifyJS

02.png

InversifyJS 是一个强大、轻量的依赖注入库,并且使用非常简单,但是把它和 React 组件结合使用还是有些问题。

因为 InversifyJS 默认使用构造函数注入,但是 React 不允许开发者扩展组件的构造函数。我们通过一个例子来看看如何解决这个问题:

inversify-inject-decorators

该工具库主要提供了 lazyInject 之类的方法,它可以给出了一个惰性的注入,意思是在对象初始化时不需要提供依赖,当我们没办法改构造函数时,这个库就派上用场啦。

另外,除了字面上所说的惰性,另外一个非常重要的功能就是允许你将 inversifyJs 集成到任何自己控制类实例创建的库或者框架,比如 React 。

inversify-react

inversify-react 是一个唯一执行依赖注入的库。就像使用 React Context.Provider一样,我们从这个库也能拿到一个 Provider:

react-inversify

虽然和上一个库名字很像,但是两个库的做法是不一样的,这种方法更接近于 React 的思想,因为对象是作为属性传递的,而不是在组件内部实例化。

推荐学习:《react视频教程

Atas ialah kandungan terperinci react能实现依赖注入吗. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!