react能使用require嗎
react能使用require,其正確的使用方法是:1、透過“
”方式讀取圖片;2、使用“require('~/images/2.png').default”方式讀取圖片;3、將img欄位拆分為檔案名稱和圖片名稱兩個部分,然後使用「require('@/assets)」方式讀取即可。
本教學操作環境:Windows10系統、react18.0.0版、Dell G3電腦。
react能使用require嗎?
可以。
關於React專案中,require無法動態載入本機圖片的問題詳解
#1. React載入本機圖片的方法
1.1 方法一
第一種方法相信大多數人用的比較多,而且出現無法載入圖片的錯誤比較少。
import user from '../img/user.png' <img src={user} alt="" />
1.2 方法二
第二種方法也是比較常用,當時使用require這個方法讀取本地圖片出現錯誤的機率很大,下面先給一個正常情況下能讀取圖片的方法,如下所示:
<img src={require('../img/icon1.png')} alt="" />
補充一句:require中只能寫字串,不能寫變數。
2. 關於使用require無法載入圖片的解決方案
2.1 案例一
我們使用方法二讀取圖片,但執行時間卻無法載入出來圖片,對於這種問題我網上找了二種方案,第一種如下所示:
但是如果使用"file-loader": "^4.2.0"或"file-loader" : "^2.0.0"卻可以正常打包後來發現file-loader在新版本中esModule預設為true,因此手動設定為false
{ test: /.(png|jpg|gif|jpeg)$/, use: [{ loader: 'url-loader', // loader: 'file-loader', options: { esModule: false, // 这里设置为false name: '[name].[ext]', limit: 10240 } }] }
方案二(建議使用)
require('~/images/2.png').default
就好了
#ps:但是如果使用react腳手架的配置是不需要用.default的,而是直接require( url)的
2.2 案例二
這個案例,時根據自己學習過程中碰到的,大致的描述我的需求:
首先,我使用React搭建一個後台管理系統,然後需要將本地資料轉為json格式然後透過React讀取顯示到前端介面上,其中我的檔案有文字以及圖片,文字很好讀取,關鍵時圖片如何取得這是一個困難。所以我接下來說說我自己如何攻破這個難點的:
1)首先我截取一部分我的json資料如下所示:
{ "success": true, "msg": "", "titleImg": "http:\/\/iwen.wiki\/sxtstu\/blueberrypai\/indexImg\/youjiIcon_38.png", "travelnote": [ { "title": "\u8de8\u8d8a\u8d64\u9053\u7684\u871c\u6708\u884c-\u9189\u7f8e\u6bdb\u91cc\u6c42\u65af-1", "writer": "\u4f59\u982d\u5c0f\u59d0Rachel", "content": "\u82b1\u306e\u6642\u5149\u65c5\u884c \u3010\u6642\u5149\u65c5\u884c\u3011\u5e74\u8f7b\u5c31\u662f \u7528\u6765\u6298\u817e\u7684\uff0c\u6709\u529b\u6c14\u53bb\u60f3\uff0c \u53bb\u505a\uff0c\u800c\u662f\u4e3a\u4e86\u7a33\u5b9a\u4e22\u6389\u9752\u6625\uff0c\u4e3a\u4e86\u5e73\u6de1\u4e22\u6389\u68a6", "img": "http:\/\/iwen.wiki\/sxtstu\/blueberrypai\/indexImg\/youji_38.png" }, { "title": "\u8de8\u8d8a\u8d64\u9053\u7684\u871c\u6708\u884c-\u9189\u7f8e\u6bdb\u91cc\u6c42\u65af-2", "writer": "\u4f59\u982d\u5c0f\u59d0Rachel", "content": "\u82b1\u306e\u6642\u5149\u65c5\u884c \u3010\u6642\u5149\u65c5\u884c\u3011\u5e74\u8f7b\u5c31\u662f \u7528\u6765\u6298\u817e\u7684\uff0c\u6709\u529b\u6c14\u53bb\u60f3\uff0c \u53bb\u505a\uff0c\u800c\u662f\u4e3a\u4e86\u7a33\u5b9a\u4e22\u6389\u9752\u6625\uff0c\u4e3a\u4e86\u5e73\u6de1\u4e22\u6389\u68a6", "img": "http:\/\/iwen.wiki\/sxtstu\/blueberrypai\/indexImg\/youji_38.pngg" } ] }
2)我需要取得其中的欄位img
"img": "http:\/\/iwen.wiki\/sxtstu\/blueberrypai\/indexImg\/youji_38.pngg"
然後我們獲取到了img字段,得到的只是個鏈接,並不是圖片,所以需要使用下面這個標籤才能顯示出圖片:
<img src={item.img} alt='图片未显示'/>
嗯嗯,看起來很完美,上面給的這個連結是在伺服器上的是可以讀取到並顯示出來的,但是如果是本地圖片:
"img": "@/assets/imgs/cloud/Directory.svg"
我們是無法讀取的,所以這個想法最終pass。
無奈只能在網路上找找有沒有其他方法,找了下下面這篇文章:
《ES6 React 元件引用本地圖片問題》
這篇文章大致的意思就是:上面方法一和方法二這兩種方法可以解決圖片不多,在前端直接載入圖片路徑的問題。那麼,假設需要從資料庫讀取圖片的路徑,require不能寫變量,import from後面也不能寫變量,那該怎麼辦呢。所以這篇文章看了下自己試了一下沒搞所以放棄了。
最後,看到了一篇文章使用的是require來讀取,最後解決了我的問題,大家可以看看參考文獻2,這裡我說下思路吧。
之前不是說了require()裡面傳入的只能為字串?所以我們可以將img欄位拆分為2部分:檔案名稱圖片名稱
舉個例子:
#檔案名稱:'@/assets/images/'
圖片名:item.img (這個是我透過集合來遍歷所以這樣寫的)
將json裡面img欄位修改下:
"img": "logo.jpg"
最後相當於字串的拼接:@/assets /images/logo.jpg
require('@/assets/images/logo.jpg')
這樣不就達到我們的目的了?
如果這樣寫不能讀取出來那就按照下面這樣寫:
<img src={require('@/assets/images/'+ item.img).default} />
推薦學習:《react影片教學》
以上是react能使用require嗎的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

如何利用React和WebSocket建立即時聊天應用程式引言:隨著網路的快速發展,即時通訊越來越受到人們的關注。即時聊天應用程式已成為現代社交和工作生活中不可或缺的一部分。本文將介紹如何利用React和WebSocket建立一個簡單的即時聊天應用,並提供具體的程式碼範例。一、技術準備在開始建立即時聊天應用之前,我們需要準備以下技術和工具:React:一個用於構建

React前後端分離指南:如何實現前後端的解耦和獨立部署,需要具體程式碼範例在當今的Web開發環境中,前後端分離已經成為一種趨勢。透過將前端和後端程式碼分開,可以讓開發工作更加靈活、高效,並且方便進行團隊協作。本文將介紹如何使用React實現前後端分離,從而實現解耦和獨立部署的目標。首先,我們要先理解什麼是前後端分離。傳統的Web開發模式中,前端和後端是耦合在

如何利用React和Flask建構簡單易用的網路應用引言:隨著網路的發展,網路應用的需求也越來越多樣化和複雜化。為了滿足使用者對於易用性和效能的要求,使用現代化的技術堆疊來建立網路應用變得越來越重要。 React和Flask是兩個在前端和後端開發中非常受歡迎的框架,它們可以很好的結合在一起,用來建立簡單易用的網路應用。本文將詳細介紹如何利用React和Flask

React響應式設計指南:如何實現自適應的前端佈局效果隨著行動裝置的普及和使用者對多螢幕體驗的需求增加,響應式設計成為了現代前端開發的重要考量之一。而React作為目前最受歡迎的前端框架之一,提供了豐富的工具和元件,能夠幫助開發人員實現自適應的佈局效果。本文將分享一些關於使用React實現響應式設計的指南和技巧,並提供具體的程式碼範例供參考。使用React的Fle

如何利用React和RabbitMQ建立可靠的訊息傳遞應用程式引言:現代化的應用程式需要支援可靠的訊息傳遞,以實現即時更新和資料同步等功能。 React是一種流行的JavaScript庫,用於建立使用者介面,而RabbitMQ是一種可靠的訊息傳遞中間件。本文將介紹如何結合React和RabbitMQ建立可靠的訊息傳遞應用,並提供具體的程式碼範例。 RabbitMQ概述:

React程式碼偵錯指南:如何快速定位並解決前端bug引言:在開發React應用程式時,經常會遇到各種各樣的bug,這些bug可能會使應用程式崩潰或導致不正確的行為。因此,掌握調試技巧是每個React開發者必備的能力。本文將介紹一些定位和解決前端bug的實用技巧,並提供具體的程式碼範例,幫助讀者快速定位和解決React應用程式中的bug。一、調試工具的選擇:在Re

ReactRouter使用指南:如何實現前端路由控制隨著單頁應用的流行,前端路由成為了一個不可忽視的重要部分。 ReactRouter作為React生態系統中最受歡迎的路由庫,提供了豐富的功能和易用的API,使得前端路由的實作變得非常簡單和靈活。本文將介紹ReactRouter的使用方法,並提供一些具體的程式碼範例。安裝ReactRouter首先,我們需要

如何利用React和GoogleBigQuery建立快速的資料分析應用引言:在當今資訊爆炸的時代,資料分析已經成為了各產業中不可或缺的環節。而其中,建構快速、有效率的資料分析應用則成為了許多企業和個人追求的目標。本文將介紹如何利用React和GoogleBigQuery結合來建立快速的資料分析應用,並提供詳細的程式碼範例。一、概述React是用來構建
