Имея такое простое приложение CRA React
:
./index.tsx:
import React from 'react';
import ReactDOM from 'react-dom';
import Home from './components/Home';
ReactDOM.render(
<React.StrictMode>
<Home></Home>
</React.StrictMode>,
document.getElementById('root')
);
./components/Home.tsx:
function Home() {
let myPromise = new Promise(function(myResolve, myReject) {
let x = 0;
console.log("--> inside a Promise obj <--");
if (x === 0) {
myResolve("OK");
} else {
myReject("Error");
}
});
myPromise.then(
function(value) {console.log("--> Promise fulfilled <--")},
);
return (
<div>
<b>Home Page</b>
</div>
)
}
export default Home
Я получаю:
--> inside a Promise obj <--
--> Promise fulfilled <--
--> Promise fulfilled <--
на консоли.
Почему выполненный код Promise срабатывает 2 раза? Я знаю, что для режима React Strict компонент визуализируется дважды, но пример показывает некоторую несогласованность - сообщение --> inside a Promise obj <--
вызывается ОДИН раз, а --> Promise fulfilled <--
ДВАЖДЫ! хотя оба сообщения печатаются одной и той же функцией !?