SERGEYSOVA Telegram 1087
Казалось бы, что может быть такого, в патчинге глобальных функций в javascript окружении?

Не так давно, сообществу удалось пропушить отмену манки-патчинга fetch командой next.js.

Но вы знали, что StrictMode патчит console.log?

Попробуйте вот этот код:


import "./styles.css";
import { useEffect, StrictMode } from "react";
import ReactDOM from "react-dom/client";

const rootElement = document.getElementById("root")!;
const root = ReactDOM.createRoot(rootElement);

root.render(
<StrictMode>
<App />
</StrictMode>
);

function App() {
useEffect(() => {
console.info("useEffect fn called!");
}, []);

return <h1>Hello CodeSandbox</h1>;
}


И вы увидите, один лог "useEffect fn called!"
Но если добавить счетчик


let amount = 0;

export default function App() {
useEffect(() => {
console.info("useEffect fn called!", ++amount);
}, []);

return <h1>Hello CodeSandbox</h1>;
}


То, сразу будет заметна проблема:


useEffect fn called! 1
useEffect fn called! 2


И вы можете сказать: ну что такого, удобно же?
Но вам не кажется, что об этом можно было написать в документации?
https://react.dev/reference/react/StrictMode

А еще можно дать флаг, чтобы выключить это поведение (может и есть, но в документации нет ничего!)

Отлаживать работу сложных компонентов, когда React вставляет палки в колеса на каждом шаге, это адовое действо!

Если хочется потыкать:
https://github.com/facebook/react/blob/main/packages/shared/ConsolePatchingDev.js

Может это только у меня так?

Оказывается, да!
В более поздних 17+ версиях react это поведение откатили.
Теперь подсвечивают второй лог более бледным цветом

Да здравствует здравый смысл, раз уж у нас нет нормального фреймворка



tgoop.com/sergeysova/1087
Create:
Last Update:

Казалось бы, что может быть такого, в патчинге глобальных функций в javascript окружении?

Не так давно, сообществу удалось пропушить отмену манки-патчинга fetch командой next.js.

Но вы знали, что StrictMode патчит console.log?

Попробуйте вот этот код:


import "./styles.css";
import { useEffect, StrictMode } from "react";
import ReactDOM from "react-dom/client";

const rootElement = document.getElementById("root")!;
const root = ReactDOM.createRoot(rootElement);

root.render(
<StrictMode>
<App />
</StrictMode>
);

function App() {
useEffect(() => {
console.info("useEffect fn called!");
}, []);

return <h1>Hello CodeSandbox</h1>;
}


И вы увидите, один лог "useEffect fn called!"
Но если добавить счетчик


let amount = 0;

export default function App() {
useEffect(() => {
console.info("useEffect fn called!", ++amount);
}, []);

return <h1>Hello CodeSandbox</h1>;
}


То, сразу будет заметна проблема:


useEffect fn called! 1
useEffect fn called! 2


И вы можете сказать: ну что такого, удобно же?
Но вам не кажется, что об этом можно было написать в документации?
https://react.dev/reference/react/StrictMode

А еще можно дать флаг, чтобы выключить это поведение (может и есть, но в документации нет ничего!)

Отлаживать работу сложных компонентов, когда React вставляет палки в колеса на каждом шаге, это адовое действо!

Если хочется потыкать:
https://github.com/facebook/react/blob/main/packages/shared/ConsolePatchingDev.js

Может это только у меня так?

Оказывается, да!
В более поздних 17+ версиях react это поведение откатили.
Теперь подсвечивают второй лог более бледным цветом

Да здравствует здравый смысл, раз уж у нас нет нормального фреймворка

BY Сова пишет…


Share with your friend now:
tgoop.com/sergeysova/1087

View MORE
Open in Telegram


Telegram News

Date: |

The group also hosted discussions on committing arson, Judge Hui said, including setting roadblocks on fire, hurling petrol bombs at police stations and teaching people to make such weapons. The conversation linked to arson went on for two to three months, Hui said. On June 7, Perekopsky met with Brazilian President Jair Bolsonaro, an avid user of the platform. According to the firm's VP, the main subject of the meeting was "freedom of expression." Telegram has announced a number of measures aiming to tackle the spread of disinformation through its platform in Brazil. These features are part of an agreement between the platform and the country's authorities ahead of the elections in October. Telegram offers a powerful toolset that allows businesses to create and manage channels, groups, and bots to broadcast messages, engage in conversations, and offer reliable customer support via bots. The creator of the channel becomes its administrator by default. If you need help managing your channel, you can add more administrators from your subscriber base. You can provide each admin with limited or full rights to manage the channel. For example, you can allow an administrator to publish and edit content while withholding the right to add new subscribers.
from us


Telegram Сова пишет…
FROM American