[英]Import module in React several times. Is the code executed once vs executed multiple times
一切都始於需要在 function 調用中進行配置,並弄清楚如果在多個文件中導入會發生什么。
我有這個 function
function.js
export function myFunction() {
let b = Math.random();
return b;
}
兩種情況。 直接導入function,多處展示。 顯示不同的值。 第一個案例
App.js
import myFunction from "./myFunction";
export default class App extends Component {
render() {
return (
<div className="App">
<h3>{myFunction()}</h3>
<h3>{myFunction()}</h3>
</div>
);
}
}
第二種情況。
counter.js
import myFunction from "./myFunction";
export default myFunction(7)
App.js
import counter1 from "./counter";
import counter2 from "./counter";
export default class App extends Component {
render() {
return (
<div className="App">
<h3>counter1</h3>
<h3>counter2</h3>
</div>
);
}
}
在第二種情況下,顯示相同的值。
這里有一篇文章: https://dmitripavlutin.com/javascript-module-import-twice/仍然無法完全解釋發生了什么
在第一種情況下,對myFunction
有兩個單獨的調用,
也就是說對Math.random()
的兩個單獨調用(考慮到它的實現)。
在第二種情況下, counter1
和counter2
引用相同'./counter'
模塊實例。
這個實例暴露了一個常量(即: myFunction(7)
),它已在模塊實例化時初始化:
import counter1 from './counter';
聲明如下:
'./counter'
模塊'./counter'
模塊myFunction(7)
被創建(假設它等於0.12345
)'./counter'
模塊實例的default
導出counter1
變量取值0.12345
import counter2 from './counter';
聲明如下:
'./counter'
模塊'./counter'
模塊實例default
導出,即0.12345
counter2
變量也取值0.12345
這就是顯示相同值的原因。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.