91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

react能不能實現依賴注入

發布時間:2022-04-27 11:08:29 來源:億速云 閱讀:409 作者:zzz 欄目:web開發

這篇文章主要講解了“react能不能實現依賴注入”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“react能不能實現依賴注入”吧!

react能實現依賴注入。方法:1、用props實現依賴注入,可通過接收props生成html;2、用context實現依賴注入;3、用jsx實現依賴注入;4、用InversifyJS、“inversify-react”等依賴注入庫實現。

本教程操作環境:Windows10系統、react17.0.1版、Dell G3電腦。

react能實現依賴注入嗎

React能實現依賴注入

下面幾個常見的代碼,其實都應用了依賴注入的思想,我們來看幾個例子:

1、使用 props 允許依賴注入

function welcome(props) {
  return <h2> Hello, {props.name}</h2>;
}

welcome 組件通過接收 props 然后生成 html,別驚訝,我們最常用的 props 其實就是應用了依賴注入的思想。

2、使用 context 是實現依賴注入的另一種方法

function counter() {
  const { message } = useContext(MessageContext);
  return <p>{ message }</p>;
}

由于 context 是沿著組件樹向下傳遞的,我們可以使用組件內部的 hooks 來提取到它。

3、只使用 jsx 也能實現依賴注入

const ReviewList = props => ( 
  <List resource="/reviews" perPage={50} {...props}> 
    <Datagrid rowClick="edit"> 
      <DateField source="date" /> 
      <CustomerField source="customer_id " /> 
      <ProductField source="product_id" /> 
      <StatusField source="status" /> 
    </Datagrid> 
  </List> 
);

perPage 參數被傳遞給 <List>組件,然后組件通過 REST API 獲取遠程數據。

但是,<List> 組件并不會直接渲染數據,相反,它把渲染數據的重任交給了子組件 <Datagrid>。<Datagrid> 組件的渲染依賴于 <List>,<List> 是設置這種依賴關系的調用者。

但是,這些策略可能對小型項目有所幫助。在一些大型項目中往往我們需要更靈活的擴展,除了這些基礎的應用之外,我們還需要更好地支持依賴注入。

我們來看幾個擴展 React 依賴注入支持的庫。

InversifyJS

react能不能實現依賴注入

InversifyJS 是一個強大、輕量的依賴注入庫,并且使用非常簡單,但是把它和 React 組件結合使用還是有些問題。

因為 InversifyJS 默認使用構造函數注入,但是 React 不允許開發者擴展組件的構造函數。我們通過一個例子來看看如何解決這個問題:

inversify-inject-decorators

該工具庫主要提供了 lazyInject 之類的方法,它可以給出了一個惰性的注入,意思是在對象初始化時不需要提供依賴,當我們沒辦法改構造函數時,這個庫就派上用場啦。

另外,除了字面上所說的惰性,另外一個非常重要的功能就是允許你將 inversifyJs 集成到任何自己控制類實例創建的庫或者框架,比如 React 。

inversify-react

inversify-react 是一個唯一執行依賴注入的庫。就像使用 React Context.Provider一樣,我們從這個庫也能拿到一個 Provider:

react-inversify

雖然和上一個庫名字很像,但是兩個庫的做法是不一樣的,這種方法更接近于 React 的思想,因為對象是作為屬性傳遞的,而不是在組件內部實例化。

感謝各位的閱讀,以上就是“react能不能實現依賴注入”的內容了,經過本文的學習后,相信大家對react能不能實現依賴注入這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

兴仁县| 明溪县| 大厂| 阿拉善左旗| 神农架林区| 松江区| 从化市| 新邵县| 桑植县| 甘南县| 通州区| 晴隆县| 临海市| 兰州市| 天柱县| 迁安市| 洪湖市| 新和县| 嵊州市| 太康县| 长宁县| 乌拉特中旗| 咸阳市| 买车| 左云县| 蚌埠市| 马山县| 澄江县| 子洲县| 合作市| 都江堰市| 隆德县| 东兴市| 安化县| 苍山县| 长子县| 施秉县| 乌兰浩特市| 阳城县| 阳山县| 保德县|