<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[react localstorage]]></title><description><![CDATA[<p dir="auto">Привет, у меня есть проект на react, я прям новичок и сейчас хочу немного разобраться в теме localstorage, нормального видео я не нашел на эту тему. Так вот мне нужен кто-нибудь кто в этом разбирается, чтобы на примере моего проекта мне объяснить как это сделать. Не бесплатно! (данную услугу я оплачу). *Связь через дискорд. Буду очень признателен если найдется человек который предоставит такую услугу)</p>
]]></description><link>https://forum.exlends.com/topic/1858/react-localstorage</link><generator>RSS for Node</generator><lastBuildDate>Sat, 18 Apr 2026 13:57:01 GMT</lastBuildDate><atom:link href="https://forum.exlends.com/topic/1858.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 22 Mar 2026 18:49:37 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to react localstorage on Sun, 12 Apr 2026 08:53:48 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/fartyiy" aria-label="Profile: FARTYIY">@<bdi>FARTYIY</bdi></a> отодвигай проект, скажи что заболел и потребуется еще несколько дней.<br />
Вот мой тг, пиши, вечером смогу посмотреть код: @kdvoryaninov</p>
]]></description><link>https://forum.exlends.com/post/2977</link><guid isPermaLink="true">https://forum.exlends.com/post/2977</guid><dc:creator><![CDATA[kirilljsx]]></dc:creator><pubDate>Sun, 12 Apr 2026 08:53:48 GMT</pubDate></item><item><title><![CDATA[Reply to react localstorage on Fri, 10 Apr 2026 17:55:40 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/kirilljsx" aria-label="Profile: kirilljsx">@<bdi>kirilljsx</bdi></a> Запутался в коде и не могу понять куда писать и что именно. В общем всё, стою на месте. Я уже правда готов заплатить сколько скажешь. Любой свободный день - я подстроюсь. Только лишь бы помогли…(</p>
]]></description><link>https://forum.exlends.com/post/2976</link><guid isPermaLink="true">https://forum.exlends.com/post/2976</guid><dc:creator><![CDATA[FARTYIY]]></dc:creator><pubDate>Fri, 10 Apr 2026 17:55:40 GMT</pubDate></item><item><title><![CDATA[Reply to react localstorage on Fri, 10 Apr 2026 08:57:08 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/fartyiy" aria-label="Profile: FARTYIY">@<bdi>FARTYIY</bdi></a> Ох емае, во что ты там вписался то?<br />
Блин, у меня в эти выходные прям максимально забиты<img src="https://forum.exlends.com/assets/plugins/nodebb-plugin-emoji/emoji/android/1f61e.png?v=a9b928d4b2f" class="not-responsive emoji emoji-android emoji--disappointed" style="height:23px;width:auto;vertical-align:middle" title=":disappointed:" alt="😞" /> . В чем у тебя проблема конкретно?</p>
]]></description><link>https://forum.exlends.com/post/2973</link><guid isPermaLink="true">https://forum.exlends.com/post/2973</guid><dc:creator><![CDATA[kirilljsx]]></dc:creator><pubDate>Fri, 10 Apr 2026 08:57:08 GMT</pubDate></item><item><title><![CDATA[Reply to react localstorage on Thu, 09 Apr 2026 19:08:22 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/kirilljsx" aria-label="Profile: kirilljsx">@<bdi>kirilljsx</bdi></a> Привет. Я понимаю всё что ты мне написал. Но как и куда это записывать в случае с моим кодом я не знаю <img src="https://forum.exlends.com/assets/plugins/nodebb-plugin-emoji/emoji/android/1f622.png?v=a9b928d4b2f" class="not-responsive emoji emoji-android emoji--cry" style="height:23px;width:auto;vertical-align:middle" title=":cry:" alt="😢" /> . Может у тебя будет свободные пол часа на этих выходных и ты сможешь мне помочь с этим. Сроки заказа уже поджимают а я стою на одном месте… Я готов заплатить, только помоги пожалуйста<img src="https://forum.exlends.com/assets/plugins/nodebb-plugin-emoji/emoji/android/1f64f.png?v=a9b928d4b2f" class="not-responsive emoji emoji-android emoji--pray" style="height:23px;width:auto;vertical-align:middle" title="🙏" alt="🙏" /> Я буду очень благодарен. Может есть знакомый кто смог бы помочь</p>
]]></description><link>https://forum.exlends.com/post/2969</link><guid isPermaLink="true">https://forum.exlends.com/post/2969</guid><dc:creator><![CDATA[FARTYIY]]></dc:creator><pubDate>Thu, 09 Apr 2026 19:08:22 GMT</pubDate></item><item><title><![CDATA[Reply to react localstorage on Mon, 23 Mar 2026 15:39:05 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/kirilljsx" aria-label="Profile: kirilljsx">@<bdi>kirilljsx</bdi></a> Хорошо! Если вдруг появится время, было бы отлично, я готов буду за это заплатить. Большое спасибо, что отреагировал на мой пост<img src="https://forum.exlends.com/assets/plugins/nodebb-plugin-emoji/emoji/android/1f64f.png?v=a9b928d4b2f" class="not-responsive emoji emoji-android emoji--pray" style="height:23px;width:auto;vertical-align:middle" title="🙏" alt="🙏" /></p>
]]></description><link>https://forum.exlends.com/post/2798</link><guid isPermaLink="true">https://forum.exlends.com/post/2798</guid><dc:creator><![CDATA[FARTYIY]]></dc:creator><pubDate>Mon, 23 Mar 2026 15:39:05 GMT</pubDate></item><item><title><![CDATA[Reply to react localstorage on Mon, 23 Mar 2026 15:04:49 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/fartyiy" aria-label="Profile: FARTYIY">@<bdi>FARTYIY</bdi></a> Разберешься обязательно! Уж прости времени на дискорд пока нету ((</p>
<p dir="auto">Ты если что пиши вопросы и создавай темы - обязательно поможем и подскажем <img src="https://forum.exlends.com/assets/plugins/nodebb-plugin-emoji/emoji/android/1f60a.png?v=a9b928d4b2f" class="not-responsive emoji emoji-android emoji--blush" style="height:23px;width:auto;vertical-align:middle" title=":blush:" alt="😊" /></p>
]]></description><link>https://forum.exlends.com/post/2794</link><guid isPermaLink="true">https://forum.exlends.com/post/2794</guid><dc:creator><![CDATA[kirilljsx]]></dc:creator><pubDate>Mon, 23 Mar 2026 15:04:49 GMT</pubDate></item><item><title><![CDATA[Reply to react localstorage on Mon, 23 Mar 2026 14:37:17 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/aladdin" aria-label="Profile: Aladdin">@<bdi>Aladdin</bdi></a> я не разбираюсь пока в этом <img src="https://forum.exlends.com/assets/plugins/nodebb-plugin-emoji/emoji/android/1f622.png?v=a9b928d4b2f" class="not-responsive emoji emoji-android emoji--cry" style="height:23px;width:auto;vertical-align:middle" title=":cry:" alt="😢" /></p>
]]></description><link>https://forum.exlends.com/post/2793</link><guid isPermaLink="true">https://forum.exlends.com/post/2793</guid><dc:creator><![CDATA[FARTYIY]]></dc:creator><pubDate>Mon, 23 Mar 2026 14:37:17 GMT</pubDate></item><item><title><![CDATA[Reply to react localstorage on Mon, 23 Mar 2026 14:35:16 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/kirilljsx" aria-label="Profile: kirilljsx">@<bdi>kirilljsx</bdi></a> Большое тебе спасибо, что нашел время помочь мне. Я действительно надеюсь, что смогу разобраться во всем этом в будущем. Сейчас я мало что понимаю, так как мои функции добавления и удаления отличаются от ваших, но я думаю, что смогу понять концепцию. Еще раз спасибо!</p>
]]></description><link>https://forum.exlends.com/post/2792</link><guid isPermaLink="true">https://forum.exlends.com/post/2792</guid><dc:creator><![CDATA[FARTYIY]]></dc:creator><pubDate>Mon, 23 Mar 2026 14:35:16 GMT</pubDate></item><item><title><![CDATA[Reply to react localstorage on Mon, 23 Mar 2026 14:18:24 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/fartyiy" aria-label="Profile: FARTYIY">@<bdi>FARTYIY</bdi></a>   для начала, лучше расскажи используешь какой либо менеджер состояний<br />
mobx,  react context, redux, zustand. Это важно потому, что обычно задача про корзину решается именно через state  manager или react context.</p>
<p dir="auto">Фрагмент кода тоже будет не лишним</p>
]]></description><link>https://forum.exlends.com/post/2790</link><guid isPermaLink="true">https://forum.exlends.com/post/2790</guid><dc:creator><![CDATA[Aladdin]]></dc:creator><pubDate>Mon, 23 Mar 2026 14:18:24 GMT</pubDate></item><item><title><![CDATA[Reply to react localstorage on Mon, 23 Mar 2026 14:11:07 GMT]]></title><description><![CDATA[<p dir="auto">А и еще, учись работать со спрайдами <code>Spread </code> в реакте - это будет твоим ключем к успеху для манипуляции данных <img src="https://forum.exlends.com/assets/plugins/nodebb-plugin-emoji/emoji/android/1f919.png?v=a9b928d4b2f" class="not-responsive emoji emoji-android emoji--call_me_hand" style="height:23px;width:auto;vertical-align:middle" title=":call_me_hand:" alt="🤙" /></p>
]]></description><link>https://forum.exlends.com/post/2788</link><guid isPermaLink="true">https://forum.exlends.com/post/2788</guid><dc:creator><![CDATA[kirilljsx]]></dc:creator><pubDate>Mon, 23 Mar 2026 14:11:07 GMT</pubDate></item><item><title><![CDATA[Reply to react localstorage on Mon, 23 Mar 2026 14:09:53 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/fartyiy" aria-label="Profile: FARTYIY">@<bdi>FARTYIY</bdi></a> Ну смотри, так как ты в react пробуешь все это дело, то тебе нужно использовать хуки <code>useEffect</code> и <code>useState</code>.</p>
<p dir="auto">А именно, тебе сначала нужно сделать состояние, примерно так:</p>
<pre><code class="language-jsx">const [cart, setCart] = useState(() =&gt; {
    const saveCart = localStorage.getItem('cart');
    return saveCart ? JSON.parse(saveCart):[];
});
</code></pre>
<p dir="auto">Смотри что тут происходит через <code>getItem('cart')</code> ты получаешь состояние корзины для текущего пользователя, и передаешь в переменную <code>saveCart</code>,</p>
<p dir="auto">Обрати внимание на <code>return</code>, здесь используется <code>?</code> это тернарный оператор (надеюсь ты читал про это <img src="https://forum.exlends.com/assets/plugins/nodebb-plugin-emoji/emoji/android/1f601.png?v=a9b928d4b2f" class="not-responsive emoji emoji-android emoji--grin" style="height:23px;width:auto;vertical-align:middle" title=":grin:" alt="😁" /> ) тем самым ты проверяешь есть ли какие-либо данные, если да то парсишь их, если нет то возвращаешь пустой массив.</p>
<p dir="auto">Опять же, так как это корзина у тебя, тебе при загрузке страницу (компонента корзины) надо эти данные подтягивать, тут на помощь придет - <code>useEffect</code>, при мерно так:</p>
<pre><code class="language-jsx">useEffect(() = &gt; {
    localStorage.setItem('cart', JSON.stringify(cart))
}, [cart]);
</code></pre>
<p dir="auto">Тут при загрузке компонента корзины мы вызываем наш стейте - <code>const [cart, setCart] = useState(() =&gt; {...};</code></p>
<p dir="auto">Обрати также внимание на то что в конце <code>useEffect</code> мы передаем нашу корзина <code>[cart]</code> - это нужно для того что бы каждый раз менять состояние корзины (смотря что там у тебя счетчик или еще чего)</p>
<p dir="auto">Ну а дальше ты уже манипулируешь данными корзины через переменную <code>cart</code> которую мы сделал через состояние <code>useState</code>.</p>
<hr />
<p dir="auto">Про добавление в <code>localStorage</code>, я так понимаю у тебя уже есть функции добавления и удаления товаров в корзину (предположим)</p>
<pre><code class="language-jsx">// Функция добавления
const addToCart = (product) =&gt; {
    setCart((prevCart) =&gt; [...prevCart, product])
};
// Функция удаления
const removeFromCart = (productId) =&gt; {
    setCart((prevCart) =&gt; prevCart.filter(item =&gt; item.id !== productId)
}
</code></pre>
<p dir="auto">Тут дело с манипуляцией <code>localstorage</code> мы не используем стандартные функции его самого по типу: <code>getItam()</code> кроме в стейте, <code>setItam</code> и другие. Поподробнее можешь почитатать тут если нужна нативная манипуляция - <a href="https://learn.javascript.ru/localstorage" target="_blank" rel="noopener noreferrer">https://learn.javascript.ru/localstorage</a></p>
<p dir="auto">За нас тут в первом случае при добавлении делает синтаксис <code>Spread</code>, через спрайд мы создаем совершенно новый массив, берем все элементы из старой корзины (состояния) и перекладываем в новый массив <code>[...prevCart]</code>, вторым аргументом мы передает новый товар (новый элемент массива) <code>[...prevCart, product]</code></p>
<p dir="auto">У тебя может возникнуть вопрос откуда у нас взялся <code>prevCart</code> - по сути это может быть любым название, вся магия происходит в реакте под капотом так как наша функция <code>setCart</code> - это элемент обновления (функция обновления) которую мы написали в самом начале <code>const [cart, setCart] = useState(() =&gt; )}</code></p>
<p dir="auto">Теперь про функцию <code>removeFromCart</code>, тут аналогично, мы через <code>setCart()</code> берем наш массив <code>prevCart</code> опять же мы его исходный не изменяем и далее проходимся через функцию <code>filter()</code> проходимся по каждому товару и возвращаем новый массив.<br />
А по условию следующее: в новый массив попадают только те элементы чей <code>id</code> не совпадает с удаляемым.<br />
Обрати внимание на <code>item.id</code> мы обращаемся через точку нашего элемента к его <code>id</code>. Какая у тебя там структура ты уже сам должен знать <img src="https://forum.exlends.com/assets/plugins/nodebb-plugin-emoji/emoji/android/1f600.png?v=a9b928d4b2f" class="not-responsive emoji emoji-android emoji--grinning" style="height:23px;width:auto;vertical-align:middle" title=":grinning:" alt="😀" /></p>
<p dir="auto">И самое главное почему так - это безопасное обновление состояния которое заставляет реакт перерисовывать корзину без удаления товара.</p>
<p dir="auto">К тому же почему мы создаем каждый раз новый массив, сам <code>localStorage</code> не имеет понятия массив, добавить элемент и т.д. он умеет хранить лишь одну сплошную строку текста под определенным ключом.</p>
<p dir="auto">Для примера, у нас есть в локалстораже ключ <code>cart</code>, и имеет значение:</p>
<pre><code class="language-jsx">cart: '[{"id":1,"name":"Кроссовки"},{"id":2,"name":"Футболка"}]'
</code></pre>
<p dir="auto">Если мы на прямую попробуем передавать продукт через <code>setItem(key, value)</code> он будет работать как топор который не вставляет в конец массива что-то, а тупо берет новое значение и вырубает строе под этим ключом ставя на его место новое.</p>
<hr />
<p dir="auto">Надеюсь этой информации тебе будет достаточно, я старался <img src="https://forum.exlends.com/assets/plugins/nodebb-plugin-emoji/emoji/android/1f601.png?v=a9b928d4b2f" class="not-responsive emoji emoji-android emoji--grin" style="height:23px;width:auto;vertical-align:middle" title=":grin:" alt="😁" /></p>
]]></description><link>https://forum.exlends.com/post/2786</link><guid isPermaLink="true">https://forum.exlends.com/post/2786</guid><dc:creator><![CDATA[kirilljsx]]></dc:creator><pubDate>Mon, 23 Mar 2026 14:09:53 GMT</pubDate></item><item><title><![CDATA[Reply to react localstorage on Mon, 23 Mar 2026 13:23:48 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/kirilljsx" aria-label="Profile: kirilljsx">@<bdi>kirilljsx</bdi></a> Привет, хочу чтобы когда человек добавляет в корзину товар, он у него там же оставался даже после перезагрузки сайта, а если удалял, чтобы товар удалялся. Сама корзина готова, и удаление и добавление</p>
]]></description><link>https://forum.exlends.com/post/2784</link><guid isPermaLink="true">https://forum.exlends.com/post/2784</guid><dc:creator><![CDATA[FARTYIY]]></dc:creator><pubDate>Mon, 23 Mar 2026 13:23:48 GMT</pubDate></item><item><title><![CDATA[Reply to react localstorage on Mon, 23 Mar 2026 11:10:06 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/fartyiy" aria-label="Profile: FARTYIY">@<bdi>FARTYIY</bdi></a> Привет!<br />
А что именно у тебя не получается с <code>localstorage</code>?</p>
]]></description><link>https://forum.exlends.com/post/2778</link><guid isPermaLink="true">https://forum.exlends.com/post/2778</guid><dc:creator><![CDATA[kirilljsx]]></dc:creator><pubDate>Mon, 23 Mar 2026 11:10:06 GMT</pubDate></item></channel></rss>