<?xml version="1.0" encoding="utf-8" ?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:tt="http://teletype.in/" xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/"><title>Алексей</title><subtitle>React frontend developer</subtitle><author><name>Алексей</name></author><id>https://teletype.in/atom/skns</id><link rel="self" type="application/atom+xml" href="https://teletype.in/atom/skns?offset=0"></link><link rel="alternate" type="text/html" href="https://teletype.in/@skns?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=skns"></link><link rel="next" type="application/rss+xml" href="https://teletype.in/atom/skns?offset=10"></link><link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></link><updated>2026-05-02T12:11:45.376Z</updated><entry><id>skns:C-Hto-takoe-fabrika-v-Javascript-03-20</id><link rel="alternate" type="text/html" href="https://teletype.in/@skns/C-Hto-takoe-fabrika-v-Javascript-03-20?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=skns"></link><title>Что такое фабрика в Javascript?</title><published>2023-03-20T13:26:41.844Z</published><updated>2023-03-20T13:26:41.844Z</updated><summary type="html">В процессе разработки приложений на Javascript встраивание объектов в код может быть затруднительным для понимания и поддержки. Родительский объект может быть заполнен деталями реализации, что делает его менее универсальным и гибким. В таких случаях, фабрики объектов становятся очень полезными для разработчиков. В этой статье мы рассмотрим, что такое фабрики объектов в Javascript и как они могут быть использованы в вашем коде.</summary><content type="html">
  &lt;p id=&quot;lu6R&quot;&gt;В процессе разработки приложений на Javascript встраивание объектов в код может быть затруднительным для понимания и поддержки. Родительский объект может быть заполнен деталями реализации, что делает его менее универсальным и гибким. В таких случаях, фабрики объектов становятся очень полезными для разработчиков. В этой статье мы рассмотрим, что такое фабрики объектов в Javascript и как они могут быть использованы в вашем коде.&lt;/p&gt;
  &lt;p id=&quot;9XmW&quot;&gt;&lt;strong&gt;Что такое фабрика в Javascript?&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;ViqQ&quot;&gt;Фабрика в Javascript - это функция, которая генерирует и возвращает новый объект. Она является альтернативой созданию объектов с помощью классов и конструкторов, поскольку фабрики могут быть более гибкими и более легкими в использовании.&lt;/p&gt;
  &lt;p id=&quot;HY01&quot;&gt;&lt;strong&gt;Преимущества использования фабрик объектов&lt;/strong&gt;&lt;/p&gt;
  &lt;ul id=&quot;5LrX&quot;&gt;
    &lt;li id=&quot;pe8u&quot;&gt;Улучшенная читаемость кода: фабрики объектов могут упростить ваш код и сделать его более понятным для других разработчиков.&lt;/li&gt;
    &lt;li id=&quot;W2H1&quot;&gt;Уменьшение сложности кода: фабричные функции могут отделить реализацию объектов от кода, который этот объект использует.&lt;/li&gt;
    &lt;li id=&quot;sBpq&quot;&gt;Безопасность кода: фабричные функции могут контролировать создание объектов и обеспечивать безопасность данных.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;HeKq&quot;&gt;&lt;strong&gt;Пример фабричной функции&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;tYnV&quot;&gt;Фабричная функция создает новый объект и возвращает его. В данном примере мы создадим фабрику для генерации пользовательских объектов:&lt;/p&gt;
  &lt;pre id=&quot;3rBW&quot;&gt;function createUser(name, email, phone) {
  return {
    name: name,
    email: email,
    phone: phone,
    getInfo: function() {
      return &amp;#x60;${this.name} - ${this.email} - ${this.phone}&amp;#x60;
    }
  }
}

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

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

</content></entry><entry><id>skns:Osnovnye-metody-massivov-JS-03-20</id><link rel="alternate" type="text/html" href="https://teletype.in/@skns/Osnovnye-metody-massivov-JS-03-20?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=skns"></link><title>Основные методы массивов JS</title><published>2023-03-20T09:15:21.223Z</published><updated>2023-03-20T09:15:21.223Z</updated><summary type="html">Программирование с использованием React.js и Javascript становится все более популярным, и методы массива - одна из важных тем для изучения. Массивы - это коллекции элементов, которые могут быть изменены, удалены или добавлены в рамках программы. В этой статье мы рассмотрим несколько методов массива, которые могут помочь в работе с коллекциями данных.</summary><content type="html">
  &lt;p id=&quot;LBgJ&quot;&gt;Программирование с использованием React.js и Javascript становится все более популярным, и методы массива - одна из важных тем для изучения. Массивы - это коллекции элементов, которые могут быть изменены, удалены или добавлены в рамках программы. В этой статье мы рассмотрим несколько методов массива, которые могут помочь в работе с коллекциями данных.&lt;/p&gt;
  &lt;ol id=&quot;vNIX&quot;&gt;
    &lt;li id=&quot;HHMZ&quot;&gt;map() - метод позволяет изменить каждый элемент массива и вернуть новый массив, который будет содержать измененные элементы. Например, можно изменить цены на товары в массиве:&lt;/li&gt;
  &lt;/ol&gt;
  &lt;pre id=&quot;yDvx&quot;&gt;const products = [
  { name: &amp;#x27;apple&amp;#x27;, price: 1.99 },
  { name: &amp;#x27;orange&amp;#x27;, price: 2.49 },
  { name: &amp;#x27;banana&amp;#x27;, price: 0.99 }
];

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

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

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

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

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

console.log(totalPrice); // 5.47

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

</content></entry><entry><id>skns:eZjKoIxPJyk</id><link rel="alternate" type="text/html" href="https://teletype.in/@skns/eZjKoIxPJyk?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=skns"></link><title>Создаем кастомный хук useOutsideClick на React.js</title><published>2023-03-18T22:28:07.783Z</published><updated>2023-03-18T22:28:57.390Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img3.teletype.in/files/2c/9a/2c9add76-a903-44e4-8c4e-341067d2ab4d.png"></media:thumbnail><category term="frontend" label="frontend"></category><summary type="html">&lt;img src=&quot;https://img1.teletype.in/files/4b/48/4b486506-b900-4551-bf41-3e90e7d1a958.png&quot;&gt;Создаем кастомный хук useOutsideClick на React.js</summary><content type="html">
  &lt;p id=&quot;wpsw&quot;&gt;&lt;strong&gt;&lt;em&gt;Создаем кастомный хук useOutsideClick на React.js&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;figure id=&quot;aMvn&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/4b/48/4b486506-b900-4551-bf41-3e90e7d1a958.png&quot; width=&quot;1358&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;5Sum&quot;&gt;Веб-приложения неизбежно имеют множество интерактивных элементов, и часто требуется взаимодействовать с элементами при нажатии вне их области. Возможно, вы заметили, что некоторые люди зависают в таком состоянии, когда они не знают, как закрыть модальное окно на сайте, что является плохим пользовательским опытом. Эта статья поможет вам понять, как создать свой собственный хук &lt;code&gt;useOutsideClick&lt;/code&gt;, который можно использовать для закрытия интерактивных элементов при клике вне их области.&lt;/p&gt;
  &lt;p id=&quot;nujW&quot;&gt;&lt;strong&gt;&lt;em&gt;Что такое хуки React?&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;WMWW&quot;&gt;Хуки или &lt;em&gt;hooks&lt;/em&gt; — это специальная функциональность в React, которая позволяет использовать &lt;em&gt;state&lt;/em&gt; и другие возможности React внутри функциональных компонентов. Как правило, общий стейт React определяется в компонентах и передается в каждый дочерний компонент через пропсы. Однако, хуки позволяют использовать &lt;em&gt;state&lt;/em&gt; и otrasную функциональность без необходимости выполнения этих действий через пропсы, что упрощает процесс разработки.&lt;/p&gt;
  &lt;p id=&quot;NjLx&quot;&gt;&lt;strong&gt;&lt;em&gt;Как мы можем использовать кастомные хуки?&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;SAQv&quot;&gt;React предоставляет несколько хуков, которые используются для различных целей, например, &lt;em&gt;useState&lt;/em&gt; для управления состоянием или &lt;em&gt;useEffect&lt;/em&gt; для внедрения выполняемых на клиенте действий. Однако, React также позволяет создавать собственные хуки, которые можно использовать вместе с другим компонентом. Мы создадим свой кастомный хук, который будет использоваться для закрытия окна при клике вне его области.&lt;/p&gt;
  &lt;p id=&quot;dRdI&quot;&gt;&lt;strong&gt;&lt;em&gt;Создание хука useOutsideClick&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;u1Ti&quot;&gt;Первым шагом является создание кастомного хука, который будет использоваться для определения клика за пределами определенной области. Мы будем использовать &lt;em&gt;useRef&lt;/em&gt; для создания ссылки на элемент, который должен проверяться при клике вне его области.&lt;/p&gt;
  &lt;pre id=&quot;5VqB&quot;&gt;import { useState, useEffect, useRef } from &amp;#x27;react&amp;#x27;;

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

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

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

  return { ref, isActive, setIsActive };
};

export default useOutsideClick;

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

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

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

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

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

</content></entry><entry><id>skns:Kak-rabotaet-zamykanie-v-Java-Script-03-18</id><link rel="alternate" type="text/html" href="https://teletype.in/@skns/Kak-rabotaet-zamykanie-v-Java-Script-03-18?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=skns"></link><title>Как работает замыкание в JavaScript</title><published>2023-03-18T21:41:55.945Z</published><updated>2023-03-18T21:41:55.945Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img4.teletype.in/files/f5/86/f58696b6-00a6-472e-8084-c2ce2ce58bd0.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://img3.teletype.in/files/2e/1f/2e1f5193-3161-495f-a083-f7de4bc25a16.png&quot;&gt;В языке программирования JavaScript замыкание (closure) представляет собой особенный механизм обработки области видимости. Используя замыкания в коде, можно сохранять переменные в специальном контексте, который будет связан с текущей функцией.</summary><content type="html">
  &lt;figure id=&quot;DpfU&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/2e/1f/2e1f5193-3161-495f-a083-f7de4bc25a16.png&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;6zsQ&quot;&gt;В языке программирования JavaScript замыкание (closure) представляет собой особенный механизм обработки области видимости. Используя замыкания в коде, можно сохранять переменные в специальном контексте, который будет связан с текущей функцией.&lt;/p&gt;
  &lt;p id=&quot;x57A&quot;&gt;Теперь посмотрим на пример из кода:&lt;/p&gt;
  &lt;pre id=&quot;XnLu&quot;&gt;function counter() {
  let count = 0;
  return function() {
    count++;
    console.log(count);
  }
}

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

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

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

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

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

</content></entry><entry><id>skns:getServerSideProps</id><link rel="alternate" type="text/html" href="https://teletype.in/@skns/getServerSideProps?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=skns"></link><title>Как работает getServerSideProps на Next.js</title><published>2023-03-18T21:21:24.266Z</published><updated>2023-03-18T21:21:24.266Z</updated><tt:hashtag>next_js</tt:hashtag><tt:hashtag>react_js</tt:hashtag><tt:hashtag>javascript</tt:hashtag><summary type="html">Next.js - это фреймворк для рендеринга серверной части приложений React. С помощью Next.js веб-разработчики могут быстро создавать универсальные приложения с рендерингом на сервере и клиенте.</summary><content type="html">
  &lt;h2 id=&quot;BlGx&quot;&gt;Введение&lt;/h2&gt;
  &lt;p id=&quot;T15b&quot;&gt;Next.js - это фреймворк для рендеринга серверной части приложений React. С помощью Next.js веб-разработчики могут быстро создавать универсальные приложения с рендерингом на сервере и клиенте.&lt;/p&gt;
  &lt;p id=&quot;iHHC&quot;&gt;Одним из ключевых элементов Next.js является метод &lt;em&gt;getServerSideProps &lt;/em&gt;, который позволяет получать данные на сервере перед их выводом на странице. В этой статье мы рассмотрим, как &lt;em&gt;getServerSideProps &lt;/em&gt; работает и как использовать его в своих проектах.&lt;/p&gt;
  &lt;h3 id=&quot;zByG&quot;&gt;Основы &lt;em&gt;getServerSideProps&lt;/em&gt;&lt;/h3&gt;
  &lt;p id=&quot;IRQS&quot;&gt;&lt;em&gt;getServerSideProps&lt;/em&gt; - это метод, который позволяет получать данные на серверной стороне перед тем, как рендерить страницу. Он запускается только на серверной стороне и недоступен в браузере.&lt;/p&gt;
  &lt;p id=&quot;AH4B&quot;&gt;Пример:&lt;/p&gt;
  &lt;p id=&quot;gjPh&quot;&gt;&lt;br /&gt;&lt;code&gt;export async function getServerSideProps() {&lt;br /&gt;  const res = await fetch(&amp;#x27;http://example.com/data&amp;#x27;);&lt;br /&gt;  const data = await res.json();&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;ZqRk&quot;&gt;&lt;code&gt;  return {&lt;br /&gt;    props: { data }&lt;br /&gt;  }&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;&lt;/p&gt;
  &lt;p id=&quot;HcaQ&quot;&gt;Этот метод &amp;#x60;async&amp;#x60; и возвращает объект со свойством &amp;#x60;props&amp;#x60;, которое содержит данные, полученные с сервера. Полученные данные могут быть переданы в компонент React в качестве свойств.&lt;/p&gt;
  &lt;h3 id=&quot;O3lh&quot;&gt;Использование getServerSideProps&lt;/h3&gt;
  &lt;p id=&quot;ohjU&quot;&gt;Метод &lt;em&gt;getServerSideProps &lt;/em&gt;может быть использован в любых страницах Next.js. Он должен быть определен внутри компонента страницы и экспортирован как часть его API.&lt;/p&gt;
  &lt;p id=&quot;I8hf&quot;&gt;Пример:&lt;br /&gt;&lt;code&gt;function Page({ data }) {&lt;br /&gt;  return (&lt;br /&gt;    &amp;lt;&amp;gt;&lt;br /&gt;      &amp;lt;h1&amp;gt;{data.title}&amp;lt;/h1&amp;gt;&lt;br /&gt;      &amp;lt;p&amp;gt;{data.body}&amp;lt;/p&amp;gt;&lt;br /&gt;    &amp;lt;/&amp;gt;&lt;br /&gt;  )&lt;br /&gt;}&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;d1HT&quot;&gt;&lt;code&gt;export async function getServerSideProps() {&lt;br /&gt;  const res = await fetch(&amp;#x27;http://example.com/data&amp;#x27;);&lt;br /&gt;  const data = await res.json();&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;YmzH&quot;&gt;&lt;code&gt;  return {&lt;br /&gt;    props: { data }&lt;br /&gt;  }&lt;br /&gt;}&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;hRn2&quot;&gt;&lt;code&gt;export default Page&lt;/code&gt;&lt;br /&gt;&lt;/p&gt;
  &lt;p id=&quot;Ysu3&quot;&gt;В этом примере мы определяем компонент &lt;em&gt;Page&lt;/em&gt;, который выводит данные, полученные с сервера. Метод &lt;em&gt;getServerSideProps &lt;/em&gt;получает данные и передает их в &lt;em&gt;Page&lt;/em&gt; в виде свойств.&lt;/p&gt;
  &lt;h3 id=&quot;JnkB&quot;&gt;Заключение&lt;/h3&gt;
  &lt;p id=&quot;Bels&quot;&gt;Метод &lt;em&gt;getServerSideProps&lt;/em&gt; - это мощный инструмент в библиотеке Next.js, который позволяет получать данные на сервере перед выводом страницы. Это может быть полезно при работе с базами данных или при интеграции с API.&lt;/p&gt;
  &lt;p id=&quot;eOUx&quot;&gt;Надеемся, что эта статья помогла вам понять, как работает &lt;em&gt;getServerSideProps &lt;/em&gt;. Если у вас есть вопросы или комментарии, не стесняйтесь оставить их ниже.&lt;/p&gt;
  &lt;tt-tags id=&quot;h6Jv&quot;&gt;
    &lt;tt-tag name=&quot;next_js&quot;&gt;#next_js&lt;/tt-tag&gt;
    &lt;tt-tag name=&quot;react_js&quot;&gt;#react_js&lt;/tt-tag&gt;
    &lt;tt-tag name=&quot;javascript&quot;&gt;#javascript&lt;/tt-tag&gt;
  &lt;/tt-tags&gt;

</content></entry><entry><id>skns:react-use-memo</id><link rel="alternate" type="text/html" href="https://teletype.in/@skns/react-use-memo?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=skns"></link><title>Как оптимизировать при помощи useMemo</title><published>2023-03-10T15:24:26.162Z</published><updated>2023-03-10T15:24:26.162Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img1.teletype.in/files/80/7a/807af19a-04ba-42e0-8392-750cd3d5df14.png"></media:thumbnail><tt:hashtag>react</tt:hashtag><tt:hashtag>javascript</tt:hashtag><tt:hashtag>usememo</tt:hashtag><tt:hashtag>оптимизация</tt:hashtag><summary type="html">Одним из способов оптимизации производительности React-приложений является использование хука useMemo.</summary><content type="html">
  &lt;p id=&quot;FecM&quot;&gt;Одним из способов оптимизации производительности React-приложений является использование хука useMemo.&lt;/p&gt;
  &lt;p id=&quot;egub&quot;&gt;Хук useMemo позволяет кэшировать результат выполнения функции и использовать его в дальнейшем без повторного вычисления. Важно отметить, что кэширование происходит только в том случае, если аргументы функции остаются неизменными.&lt;/p&gt;
  &lt;p id=&quot;VnJK&quot;&gt;Давайте рассмотрим пример использования хука useMemo:&lt;/p&gt;
  &lt;pre id=&quot;thBc&quot;&gt;import React, { useMemo } from &amp;#x27;react&amp;#x27;;

function App() {
  // вычисляемое значение
  const sum = useMemo(() =&amp;gt; {
    let sum = 0;
    for (let i = 1; i &amp;lt;= 1000000; i++) {
      sum += i;
    }
    return sum;
  }, []);

  return &amp;lt;div&amp;gt;Сумма от 1 до 1000000: {sum}&amp;lt;/div&amp;gt;;
}

&lt;/pre&gt;
  &lt;p id=&quot;F7G3&quot;&gt;В этом примере мы вычисляем сумму чисел от 1 до 1000000 с помощью цикла for. Используя хук useMemo, мы кэшируем это значение и можем выводить его на странице без повторного вычисления.&lt;/p&gt;
  &lt;p id=&quot;Lwlv&quot;&gt;Что же делать, если у нас есть зависимые переменные, которые влияют на результат выполнения функции? В таком случае, мы можем передать эти переменные вторым аргументом хука useMemo.&lt;/p&gt;
  &lt;pre id=&quot;B7zI&quot;&gt;import React, { useMemo, useState } from &amp;#x27;react&amp;#x27;;

function App() {
  const [count, setCount] = useState(0);

  // вычисляемое значение
  const isEven = useMemo(() =&amp;gt; {
    console.log(&amp;#x27;Результат функции useMemo&amp;#x27;);
    return count % 2 === 0;
  }, [count]);

  return (
    &amp;lt;div&amp;gt;
      &amp;lt;div&amp;gt;Счетчик: {count}&amp;lt;/div&amp;gt;
      {isEven ? &amp;lt;div&amp;gt;Число четное&amp;lt;/div&amp;gt; : &amp;lt;div&amp;gt;Число нечетное&amp;lt;/div&amp;gt;}
      &amp;lt;button onClick={() =&amp;gt; setCount(count + 1)}&amp;gt;Увеличить&amp;lt;/button&amp;gt;
    &amp;lt;/div&amp;gt;
  );
}

&lt;/pre&gt;
  &lt;p id=&quot;R8Z7&quot;&gt;В этом примере мы используем хук useState для хранения значения счетчика и кнопку для его увеличения. Функция useMemo вычисляет, является ли значение счетчика четным, и кэширует результат выполнения функции. Таким образом, при нажатии на кнопку, React будет выполнять функцию useMemo только в том случае, если значение счетчика изменилось.&lt;/p&gt;
  &lt;p id=&quot;Se5i&quot;&gt;Надеюсь, эти примеры помогут вам лучше понять, как использовать хук useMemo в ваших React-приложениях. Этот хук является одним из способов оптимизации производительности и может быть полезен в ситуациях, когда у вас есть сложные вычисления, которые необходимо повторять на странице.&lt;/p&gt;
  &lt;tt-tags id=&quot;4l2Y&quot;&gt;
    &lt;tt-tag name=&quot;react&quot;&gt;#react&lt;/tt-tag&gt;
    &lt;tt-tag name=&quot;javascript&quot;&gt;#javascript&lt;/tt-tag&gt;
    &lt;tt-tag name=&quot;usememo&quot;&gt;#usememo&lt;/tt-tag&gt;
    &lt;tt-tag name=&quot;оптимизация&quot;&gt;#оптимизация&lt;/tt-tag&gt;
  &lt;/tt-tags&gt;

</content></entry></feed>