<?xml version="1.0" encoding="utf-8" ?><rss version="2.0" xmlns:tt="http://teletype.in/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:media="http://search.yahoo.com/mrss/"><channel><title>Алексей</title><generator>teletype.in</generator><description><![CDATA[React frontend developer]]></description><image><url>https://teletype.in/files/7d/a0/7da05e23-27d5-4ae9-b86b-2993c8b5b099.png</url><title>Алексей</title><link>https://teletype.in/@skns</link></image><link>https://teletype.in/@skns?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=skns</link><atom:link rel="self" type="application/rss+xml" href="https://teletype.in/rss/skns?offset=0"></atom:link><atom:link rel="next" type="application/rss+xml" href="https://teletype.in/rss/skns?offset=10"></atom:link><atom:link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></atom:link><pubDate>Sat, 02 May 2026 12:11:44 GMT</pubDate><lastBuildDate>Sat, 02 May 2026 12:11:44 GMT</lastBuildDate><item><guid isPermaLink="true">https://teletype.in/@skns/C-Hto-takoe-fabrika-v-Javascript-03-20</guid><link>https://teletype.in/@skns/C-Hto-takoe-fabrika-v-Javascript-03-20?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=skns</link><comments>https://teletype.in/@skns/C-Hto-takoe-fabrika-v-Javascript-03-20?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=skns#comments</comments><dc:creator>skns</dc:creator><title>Что такое фабрика в Javascript?</title><pubDate>Mon, 20 Mar 2023 13:26:41 GMT</pubDate><description><![CDATA[В процессе разработки приложений на Javascript встраивание объектов в код может быть затруднительным для понимания и поддержки. Родительский объект может быть заполнен деталями реализации, что делает его менее универсальным и гибким. В таких случаях, фабрики объектов становятся очень полезными для разработчиков. В этой статье мы рассмотрим, что такое фабрики объектов в Javascript и как они могут быть использованы в вашем коде.]]></description><content:encoded><![CDATA[
  <p id="lu6R">В процессе разработки приложений на Javascript встраивание объектов в код может быть затруднительным для понимания и поддержки. Родительский объект может быть заполнен деталями реализации, что делает его менее универсальным и гибким. В таких случаях, фабрики объектов становятся очень полезными для разработчиков. В этой статье мы рассмотрим, что такое фабрики объектов в Javascript и как они могут быть использованы в вашем коде.</p>
  <p id="9XmW"><strong>Что такое фабрика в Javascript?</strong></p>
  <p id="ViqQ">Фабрика в Javascript - это функция, которая генерирует и возвращает новый объект. Она является альтернативой созданию объектов с помощью классов и конструкторов, поскольку фабрики могут быть более гибкими и более легкими в использовании.</p>
  <p id="HY01"><strong>Преимущества использования фабрик объектов</strong></p>
  <ul id="5LrX">
    <li id="pe8u">Улучшенная читаемость кода: фабрики объектов могут упростить ваш код и сделать его более понятным для других разработчиков.</li>
    <li id="W2H1">Уменьшение сложности кода: фабричные функции могут отделить реализацию объектов от кода, который этот объект использует.</li>
    <li id="sBpq">Безопасность кода: фабричные функции могут контролировать создание объектов и обеспечивать безопасность данных.</li>
  </ul>
  <p id="HeKq"><strong>Пример фабричной функции</strong></p>
  <p id="tYnV">Фабричная функция создает новый объект и возвращает его. В данном примере мы создадим фабрику для генерации пользовательских объектов:</p>
  <pre id="3rBW">function createUser(name, email, phone) {
  return {
    name: name,
    email: email,
    phone: phone,
    getInfo: function() {
      return &#x60;${this.name} - ${this.email} - ${this.phone}&#x60;
    }
  }
}

</pre>
  <p id="VWHl">Мы можем вызвать эту функцию, чтобы создать новый объект пользовательской информации:</p>
  <pre id="vWmQ">const user1 = createUser(&#x27;John&#x27;, &#x27;john@example.com&#x27;, &#x27;555-555-5555&#x27;);
console.log(user1.getInfo()); // &quot;John - john@example.com - 555-555-5555&quot;

</pre>
  <p id="4Ffo">Мы также можем создавать любое количество пользователей, используя эту функцию фабрики.</p>
  <p id="3yjb"><strong>Заключение</strong></p>
  <p id="HOqM">Фабрики объектов - это мощный инструмент для упрощения кода и контроля создания объектов на Javascript. Они могут упростить чтение и поддержку кода, уменьшить сложность кода и обеспечить безопасность данных. Используйте фабричные функции где вам кажется, чтобы сделать ваш код более читаемым и эффективным.</p>
  <p id="558u">Хештеги: #фабрика #javascript #программирование #разработка #объекты</p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@skns/Osnovnye-metody-massivov-JS-03-20</guid><link>https://teletype.in/@skns/Osnovnye-metody-massivov-JS-03-20?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=skns</link><comments>https://teletype.in/@skns/Osnovnye-metody-massivov-JS-03-20?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=skns#comments</comments><dc:creator>skns</dc:creator><title>Основные методы массивов JS</title><pubDate>Mon, 20 Mar 2023 09:15:21 GMT</pubDate><description><![CDATA[Программирование с использованием React.js и Javascript становится все более популярным, и методы массива - одна из важных тем для изучения. Массивы - это коллекции элементов, которые могут быть изменены, удалены или добавлены в рамках программы. В этой статье мы рассмотрим несколько методов массива, которые могут помочь в работе с коллекциями данных.]]></description><content:encoded><![CDATA[
  <p id="LBgJ">Программирование с использованием React.js и Javascript становится все более популярным, и методы массива - одна из важных тем для изучения. Массивы - это коллекции элементов, которые могут быть изменены, удалены или добавлены в рамках программы. В этой статье мы рассмотрим несколько методов массива, которые могут помочь в работе с коллекциями данных.</p>
  <ol id="vNIX">
    <li id="HHMZ">map() - метод позволяет изменить каждый элемент массива и вернуть новый массив, который будет содержать измененные элементы. Например, можно изменить цены на товары в массиве:</li>
  </ol>
  <pre id="yDvx">const products = [
  { name: &#x27;apple&#x27;, price: 1.99 },
  { name: &#x27;orange&#x27;, price: 2.49 },
  { name: &#x27;banana&#x27;, price: 0.99 }
];

const updatedPrices = products.map(product =&gt; {
  return { name: product.name, price: product.price * 1.1 };
});

console.log(updatedPrices); // [{ name: &#x27;apple&#x27;, price: 2.19 }, { name: &#x27;orange&#x27;, price: 2.74 }, { name: &#x27;banana&#x27;, price: 1.09 }]

</pre>
  <ol id="DJSw">
    <li id="1c00">filter() - метод позволяет отфильтровать элементы массива и вернуть новый массив, который будет содержать только элементы, удовлетворяющие заданным условиям. Например, можно отфильтровать товары по цене:</li>
  </ol>
  <pre id="SNmK">const affordableProducts = products.filter(product =&gt; product.price &lt; 2.0);

console.log(affordableProducts); // [{ name: &#x27;apple&#x27;, price: 1.99 }, { name: &#x27;banana&#x27;, price: 0.99 }]

</pre>
  <ol id="dvBk">
    <li id="yMYK">reduce() - метод позволяет выполнить некоторое действие на каждом элементе массива и вернуть одно значение, которое будет результатом выполнения этого действия. Например, можно вычислить общую стоимость товаров:</li>
  </ol>
  <pre id="acJi">const totalPrice = products.reduce((accumulator, product) =&gt; accumulator + product.price, 0);

console.log(totalPrice); // 5.47

</pre>
  <p id="TqH3">Это только некоторые методы, которые можно использовать при работе с массивами. Важно понимать, что методы массива могут значительно упростить и ускорить работу с обширными коллекциями данных.</p>
  <p id="gGCg">#reactjs #javascript #массивы #map #filter #reduce #программирование</p>
  <p id="AapS">https://t.me/jspoxer</p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@skns/eZjKoIxPJyk</guid><link>https://teletype.in/@skns/eZjKoIxPJyk?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=skns</link><comments>https://teletype.in/@skns/eZjKoIxPJyk?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=skns#comments</comments><dc:creator>skns</dc:creator><title>Создаем кастомный хук useOutsideClick на React.js</title><pubDate>Sat, 18 Mar 2023 22:28:07 GMT</pubDate><media:content medium="image" url="https://img3.teletype.in/files/2c/9a/2c9add76-a903-44e4-8c4e-341067d2ab4d.png"></media:content><category>frontend</category><description><![CDATA[<img src="https://img1.teletype.in/files/4b/48/4b486506-b900-4551-bf41-3e90e7d1a958.png"></img>Создаем кастомный хук useOutsideClick на React.js]]></description><content:encoded><![CDATA[
  <p id="wpsw"><strong><em>Создаем кастомный хук useOutsideClick на React.js</em></strong></p>
  <figure id="aMvn" class="m_original">
    <img src="https://img1.teletype.in/files/4b/48/4b486506-b900-4551-bf41-3e90e7d1a958.png" width="1358" />
  </figure>
  <p id="5Sum">Веб-приложения неизбежно имеют множество интерактивных элементов, и часто требуется взаимодействовать с элементами при нажатии вне их области. Возможно, вы заметили, что некоторые люди зависают в таком состоянии, когда они не знают, как закрыть модальное окно на сайте, что является плохим пользовательским опытом. Эта статья поможет вам понять, как создать свой собственный хук <code>useOutsideClick</code>, который можно использовать для закрытия интерактивных элементов при клике вне их области.</p>
  <p id="nujW"><strong><em>Что такое хуки React?</em></strong></p>
  <p id="WMWW">Хуки или <em>hooks</em> — это специальная функциональность в React, которая позволяет использовать <em>state</em> и другие возможности React внутри функциональных компонентов. Как правило, общий стейт React определяется в компонентах и передается в каждый дочерний компонент через пропсы. Однако, хуки позволяют использовать <em>state</em> и otrasную функциональность без необходимости выполнения этих действий через пропсы, что упрощает процесс разработки.</p>
  <p id="NjLx"><strong><em>Как мы можем использовать кастомные хуки?</em></strong></p>
  <p id="SAQv">React предоставляет несколько хуков, которые используются для различных целей, например, <em>useState</em> для управления состоянием или <em>useEffect</em> для внедрения выполняемых на клиенте действий. Однако, React также позволяет создавать собственные хуки, которые можно использовать вместе с другим компонентом. Мы создадим свой кастомный хук, который будет использоваться для закрытия окна при клике вне его области.</p>
  <p id="dRdI"><strong><em>Создание хука useOutsideClick</em></strong></p>
  <p id="u1Ti">Первым шагом является создание кастомного хука, который будет использоваться для определения клика за пределами определенной области. Мы будем использовать <em>useRef</em> для создания ссылки на элемент, который должен проверяться при клике вне его области.</p>
  <pre id="5VqB">import { useState, useEffect, useRef } from &#x27;react&#x27;;

const useOutsideClick = (initialValue) =&gt; {
  const [isActive, setIsActive] = useState(initialValue);
  const ref = useRef(null);

  const handleClick = (e) =&gt; {
    if (ref.current &amp;&amp; !ref.current.contains(e.target)) {
      setIsActive(!isActive);
    }
  };

  useEffect(() =&gt; {
    document.addEventListener(&quot;click&quot;, handleClick);
    return () =&gt; {
      document.removeEventListener(&quot;click&quot;, handleClick);
    };
  });

  return { ref, isActive, setIsActive };
};

export default useOutsideClick;

</pre>
  <p id="Lre5">В коде выше мы создали хук <code>useOutsideClick</code>, который принимает начальное значение <em>initialValue</em>. Хук создает <em>state</em> <em>isActive</em>, который отслеживает текущее состояние активности, а также <em>ref</em> для ссылки на элемент, а также <em>setIsActive</em> для изменения состояния активности. Мы также создали функцию <em>handleClick</em>, которая проверяет, кликнул ли пользователь за пределами элемента <em>ref</em>. И если клик был выполнен вне области, то изменяется <em>isActive</em>.</p>
  <p id="rUsE">Хук также использует <em>useEffect</em>, чтобы удалить слушателя событий, когда компонент размонтирован.</p>
  <p id="htin"><strong><em>Применение нашего хука useOutsideClick</em></strong></p>
  <p id="GQIW">После создания нашего хука, мы можем использовать его в любом компоненте, где нужно обнаружить клик внутри или за пределами элемента. Мы можем использовать полученный объект, вернувшийся функциейхука, и использовать его в соответствии с потребностями нашего компонента.</p>
  <pre id="hmPu">import useOutsideClick from &#x27;./useOutsideClick&#x27;;

function SomeComponent() {
  const { ref, isActive, setIsActive } = useOutsideClick(false);

  const handleButtonClick = () =&gt; {
    setIsActive(!isActive);
  };

  return (
    &lt;div&gt;
      &lt;button onClick={handleButtonClick}&gt;Toggle visibility&lt;/button&gt;
      {isActive &amp;&amp; (
        &lt;div ref={ref}&gt;
          Here is some content. Clicking outside of this content will close it.
        &lt;/div&gt;
      )}
    &lt;/div&gt;
  );
}

</pre>
  <p id="jXyM">Мы использовали хук <code>useOutsideClick</code> внутри компонента <code>SomeComponent</code>. В этом компоненте мы создали элемент кнопки, который является отправной точкой для изменения состояния <em>isActive</em>. Каждый раз, когда мы кликаем на кнопку, <em>isActive</em> будет изменяться, и определенная область, которую мы определили с помощью ссылки на <em>ref</em>, будет спрятана или показана. Хук <em>useOutsideClick</em> помогает нам закрыть область, если вызов клика осуществляется не на определенной области.</p>
  <p id="65zL"><strong><em>Вывод</em></strong></p>
  <p id="bNqU">Мы реализовали кастомный хук <code>useOutsideClick</code>, который может быть использован для закрытия любого интерактивного элемента при клике вне его области. Мы использовали <em>useRef</em>, <em>useState</em>, и <em>useEffect</em> хуки из React библиотеки, чтобы создать хук, который легко использовать в любом компоненте React.</p>
  <p id="uc7K">#React #JavaScript #Хуки #КастомныеХуки #useOutsideClick</p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@skns/Kak-rabotaet-zamykanie-v-Java-Script-03-18</guid><link>https://teletype.in/@skns/Kak-rabotaet-zamykanie-v-Java-Script-03-18?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=skns</link><comments>https://teletype.in/@skns/Kak-rabotaet-zamykanie-v-Java-Script-03-18?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=skns#comments</comments><dc:creator>skns</dc:creator><title>Как работает замыкание в JavaScript</title><pubDate>Sat, 18 Mar 2023 21:41:55 GMT</pubDate><media:content medium="image" url="https://img4.teletype.in/files/f5/86/f58696b6-00a6-472e-8084-c2ce2ce58bd0.png"></media:content><description><![CDATA[<img src="https://img3.teletype.in/files/2e/1f/2e1f5193-3161-495f-a083-f7de4bc25a16.png"></img>В языке программирования JavaScript замыкание (closure) представляет собой особенный механизм обработки области видимости. Используя замыкания в коде, можно сохранять переменные в специальном контексте, который будет связан с текущей функцией.]]></description><content:encoded><![CDATA[
  <figure id="DpfU">
    <img src="https://img3.teletype.in/files/2e/1f/2e1f5193-3161-495f-a083-f7de4bc25a16.png" />
  </figure>
  <p id="6zsQ">В языке программирования JavaScript замыкание (closure) представляет собой особенный механизм обработки области видимости. Используя замыкания в коде, можно сохранять переменные в специальном контексте, который будет связан с текущей функцией.</p>
  <p id="x57A">Теперь посмотрим на пример из кода:</p>
  <pre id="XnLu">function counter() {
  let count = 0;
  return function() {
    count++;
    console.log(count);
  }
}

const increaseCount = counter();
increaseCount(); // 1
increaseCount(); // 2
increaseCount(); // 3
</pre>
  <p id="0R2O">Вызов функции <code>counter()</code> создает новый контекст выполнения и устанавливает значение <code>count</code> на 0. Функция затем возвращает другую функцию, в которой мы увеличиваем значение переменной <code>count</code> и выводим ее текущее значение в консоль.</p>
  <p id="G1Kt">Когда мы вызываем <code>counter()</code> и присваиваем результат переменной <code>increaseCount</code>, мы сохраняем состояние <code>count</code> для последующих вызовов <code>increaseCount()</code>. Несмотря на то, что переменная <code>count</code> существует только внутри функции <code>counter()</code>, она все еще доступна через замыкание при каждом последующем вызове <code>increaseCount()</code>.</p>
  <p id="3mmq">Кроме того, замыкания могут использоваться для сохранения приватных переменных, т.е. переменных, которые доступны только внутри определенной функции, и защищены от изменения извне.</p>
  <pre id="uSuy">function person(name, age) {
  let privateAge = age;
  return {
    getName() {
      return name;
    },
    getAge() {
      return privateAge;
    },
    increaseAge() {
      privateAge++;
    }
  }
}

const john = person(&#x27;John&#x27;, 30);

console.log(john.getName()); // &quot;John&quot;
console.log(john.getAge()); // 30

john.increaseAge();
console.log(john.getAge()); // 31

</pre>
  <p id="9O2f">Здесь мы создаем объект <code>person</code>, который хранит приватную переменную <code>privateAge</code>. Методы <code>getName()</code> и <code>getAge()</code> возвращают публичные свойства <code>name</code> и <code>privateAge</code>. Метод <code>increaseAge()</code> увеличивает значение переменной <code>privateAge</code>.</p>
  <p id="3B1A">Мы создаем новый объект <code>john</code> с помощью функции <code>person()</code>, передавая имя и возраст. Мы можем получить доступ к имени и возрасту, вызывая методы get, и увеличить возраст, вызывая метод <code>increaseAge()</code>.</p>
  <p id="ZUGj">Таким образом, замыкания позволяют сохранять и управлять значениями переменных внутри функций и использовать их в дальнейшем. Они также помогают защитить приватные переменные и методы от изменений извне.</p>
  <p id="SI02">#JavaScript #Reactjs #замыкание #closure</p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@skns/getServerSideProps</guid><link>https://teletype.in/@skns/getServerSideProps?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=skns</link><comments>https://teletype.in/@skns/getServerSideProps?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=skns#comments</comments><dc:creator>skns</dc:creator><title>Как работает getServerSideProps на Next.js</title><pubDate>Sat, 18 Mar 2023 21:21:24 GMT</pubDate><tt:hashtag>next_js</tt:hashtag><tt:hashtag>react_js</tt:hashtag><tt:hashtag>javascript</tt:hashtag><description><![CDATA[Next.js - это фреймворк для рендеринга серверной части приложений React. С помощью Next.js веб-разработчики могут быстро создавать универсальные приложения с рендерингом на сервере и клиенте.]]></description><content:encoded><![CDATA[
  <h2 id="BlGx">Введение</h2>
  <p id="T15b">Next.js - это фреймворк для рендеринга серверной части приложений React. С помощью Next.js веб-разработчики могут быстро создавать универсальные приложения с рендерингом на сервере и клиенте.</p>
  <p id="iHHC">Одним из ключевых элементов Next.js является метод <em>getServerSideProps </em>, который позволяет получать данные на сервере перед их выводом на странице. В этой статье мы рассмотрим, как <em>getServerSideProps </em> работает и как использовать его в своих проектах.</p>
  <h3 id="zByG">Основы <em>getServerSideProps</em></h3>
  <p id="IRQS"><em>getServerSideProps</em> - это метод, который позволяет получать данные на серверной стороне перед тем, как рендерить страницу. Он запускается только на серверной стороне и недоступен в браузере.</p>
  <p id="AH4B">Пример:</p>
  <p id="gjPh"><br /><code>export async function getServerSideProps() {<br />  const res = await fetch(&#x27;http://example.com/data&#x27;);<br />  const data = await res.json();</code></p>
  <p id="ZqRk"><code>  return {<br />    props: { data }<br />  }<br />}</code><br /></p>
  <p id="HcaQ">Этот метод &#x60;async&#x60; и возвращает объект со свойством &#x60;props&#x60;, которое содержит данные, полученные с сервера. Полученные данные могут быть переданы в компонент React в качестве свойств.</p>
  <h3 id="O3lh">Использование getServerSideProps</h3>
  <p id="ohjU">Метод <em>getServerSideProps </em>может быть использован в любых страницах Next.js. Он должен быть определен внутри компонента страницы и экспортирован как часть его API.</p>
  <p id="I8hf">Пример:<br /><code>function Page({ data }) {<br />  return (<br />    &lt;&gt;<br />      &lt;h1&gt;{data.title}&lt;/h1&gt;<br />      &lt;p&gt;{data.body}&lt;/p&gt;<br />    &lt;/&gt;<br />  )<br />}</code></p>
  <p id="d1HT"><code>export async function getServerSideProps() {<br />  const res = await fetch(&#x27;http://example.com/data&#x27;);<br />  const data = await res.json();</code></p>
  <p id="YmzH"><code>  return {<br />    props: { data }<br />  }<br />}</code></p>
  <p id="hRn2"><code>export default Page</code><br /></p>
  <p id="Ysu3">В этом примере мы определяем компонент <em>Page</em>, который выводит данные, полученные с сервера. Метод <em>getServerSideProps </em>получает данные и передает их в <em>Page</em> в виде свойств.</p>
  <h3 id="JnkB">Заключение</h3>
  <p id="Bels">Метод <em>getServerSideProps</em> - это мощный инструмент в библиотеке Next.js, который позволяет получать данные на сервере перед выводом страницы. Это может быть полезно при работе с базами данных или при интеграции с API.</p>
  <p id="eOUx">Надеемся, что эта статья помогла вам понять, как работает <em>getServerSideProps </em>. Если у вас есть вопросы или комментарии, не стесняйтесь оставить их ниже.</p>
  <tt-tags id="h6Jv">
    <tt-tag name="next_js">#next_js</tt-tag>
    <tt-tag name="react_js">#react_js</tt-tag>
    <tt-tag name="javascript">#javascript</tt-tag>
  </tt-tags>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@skns/react-use-memo</guid><link>https://teletype.in/@skns/react-use-memo?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=skns</link><comments>https://teletype.in/@skns/react-use-memo?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=skns#comments</comments><dc:creator>skns</dc:creator><title>Как оптимизировать при помощи useMemo</title><pubDate>Fri, 10 Mar 2023 15:24:26 GMT</pubDate><media:content medium="image" url="https://img1.teletype.in/files/80/7a/807af19a-04ba-42e0-8392-750cd3d5df14.png"></media:content><tt:hashtag>react</tt:hashtag><tt:hashtag>javascript</tt:hashtag><tt:hashtag>usememo</tt:hashtag><tt:hashtag>оптимизация</tt:hashtag><description><![CDATA[Одним из способов оптимизации производительности React-приложений является использование хука useMemo.]]></description><content:encoded><![CDATA[
  <p id="FecM">Одним из способов оптимизации производительности React-приложений является использование хука useMemo.</p>
  <p id="egub">Хук useMemo позволяет кэшировать результат выполнения функции и использовать его в дальнейшем без повторного вычисления. Важно отметить, что кэширование происходит только в том случае, если аргументы функции остаются неизменными.</p>
  <p id="VnJK">Давайте рассмотрим пример использования хука useMemo:</p>
  <pre id="thBc">import React, { useMemo } from &#x27;react&#x27;;

function App() {
  // вычисляемое значение
  const sum = useMemo(() =&gt; {
    let sum = 0;
    for (let i = 1; i &lt;= 1000000; i++) {
      sum += i;
    }
    return sum;
  }, []);

  return &lt;div&gt;Сумма от 1 до 1000000: {sum}&lt;/div&gt;;
}

</pre>
  <p id="F7G3">В этом примере мы вычисляем сумму чисел от 1 до 1000000 с помощью цикла for. Используя хук useMemo, мы кэшируем это значение и можем выводить его на странице без повторного вычисления.</p>
  <p id="Lwlv">Что же делать, если у нас есть зависимые переменные, которые влияют на результат выполнения функции? В таком случае, мы можем передать эти переменные вторым аргументом хука useMemo.</p>
  <pre id="B7zI">import React, { useMemo, useState } from &#x27;react&#x27;;

function App() {
  const [count, setCount] = useState(0);

  // вычисляемое значение
  const isEven = useMemo(() =&gt; {
    console.log(&#x27;Результат функции useMemo&#x27;);
    return count % 2 === 0;
  }, [count]);

  return (
    &lt;div&gt;
      &lt;div&gt;Счетчик: {count}&lt;/div&gt;
      {isEven ? &lt;div&gt;Число четное&lt;/div&gt; : &lt;div&gt;Число нечетное&lt;/div&gt;}
      &lt;button onClick={() =&gt; setCount(count + 1)}&gt;Увеличить&lt;/button&gt;
    &lt;/div&gt;
  );
}

</pre>
  <p id="R8Z7">В этом примере мы используем хук useState для хранения значения счетчика и кнопку для его увеличения. Функция useMemo вычисляет, является ли значение счетчика четным, и кэширует результат выполнения функции. Таким образом, при нажатии на кнопку, React будет выполнять функцию useMemo только в том случае, если значение счетчика изменилось.</p>
  <p id="Se5i">Надеюсь, эти примеры помогут вам лучше понять, как использовать хук useMemo в ваших React-приложениях. Этот хук является одним из способов оптимизации производительности и может быть полезен в ситуациях, когда у вас есть сложные вычисления, которые необходимо повторять на странице.</p>
  <tt-tags id="4l2Y">
    <tt-tag name="react">#react</tt-tag>
    <tt-tag name="javascript">#javascript</tt-tag>
    <tt-tag name="usememo">#usememo</tt-tag>
    <tt-tag name="оптимизация">#оптимизация</tt-tag>
  </tt-tags>

]]></content:encoded></item></channel></rss>