3 回答

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超2個(gè)贊
現(xiàn)在,ECMA確實(shí)有動(dòng)態(tài)進(jìn)口建議。這是在第3階段。這也可以作為babel-preset使用。
以下是根據(jù)您的情況進(jìn)行條件渲染的方法。
if (condition) {
import('something')
.then((something) => {
console.log(something.something);
});
}
這基本上返回了一個(gè)承諾。承諾解決方案有望包含該模塊。該提案還具有其他功能,例如多個(gè)動(dòng)態(tài)導(dǎo)入,默認(rèn)導(dǎo)入,js文件導(dǎo)入等。您可以在此處找到有關(guān)動(dòng)態(tài)導(dǎo)入的更多信息。

TA貢獻(xiàn)1790條經(jīng)驗(yàn) 獲得超9個(gè)贊
如果需要,可以使用require。這是有條件的require語(yǔ)句的一種方式。
let something = null;
let other = null;
if (condition) {
something = require('something');
other = require('something').other;
}
if (something && other) {
something.doStuff();
other.doOtherStuff();
}

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超13個(gè)贊
您不能有條件地導(dǎo)入,但是可以做相反的事情:有條件地導(dǎo)出某些內(nèi)容。這取決于您的用例,因此此解決方法可能不適合您。
你可以做:
api.js
import mockAPI from './mockAPI'
import realAPI from './realAPI'
const exportedAPI = shouldUseMock ? mockAPI : realAPI
export default exportedAPI
apiConsumer.js
import API from './api'
...
我用它來(lái)模擬諸如mixpanel等的分析庫(kù),因?yàn)槲夷壳盁o(wú)法擁有多個(gè)版本或前端。不是最優(yōu)雅的,但有效。根據(jù)環(huán)境的不同,我在這里和那里只有幾個(gè)“ if”,因?yàn)樵诨旌厦姘宓那闆r下,它需要初始化。
添加回答
舉報(bào)