Skip to content

Instantly share code, notes, and snippets.

View sunmeat's full-sized avatar
🐈
MEOW

Oleksandr Zahoruiko sunmeat

🐈
MEOW
View GitHub Profile
@sunmeat
sunmeat / App.jsx
Created June 14, 2025 14:10
zustand example
import { useState, useEffect } from 'react';
import { create } from 'zustand'; // npm install zustand
import './App.css';
// создание zustand store для управления корзиной и товарами
const useStore = create((set, get) => ({
products: [], // список доступных товаров
cartItems: [], // товары в корзине
status: 'idle', // статус загрузки (idle, loading, succeeded, failed)
error: null, // сообщение об ошибке
@sunmeat
sunmeat / different files.jsx
Created June 14, 2025 13:58
асинхронный поиск на редаксе
App.jsx:
import {useSelector, useDispatch, Provider} from 'react-redux';
import {configureStore, createSlice} from '@reduxjs/toolkit';
import {useState, useEffect} from 'react';
import './App.css';
// действия для асинхронного поиска товаров с использованием redux-thunk
export const fetchProducts = (searchQuery = '') => async (dispatch) => {
dispatch(setStatus('loading')); // установка статуса загрузки
@sunmeat
sunmeat / different files.jsx
Created June 12, 2025 12:04
simple redux example
App.jsx:
// импортируем хуки и компонент Provider из react-redux
import {useSelector, useDispatch, Provider} from 'react-redux'
// !!! npm install react-redux @reduxjs/toolkit !!!
// хук useSelector позволяет получить доступ к состоянию хранилища - единственного центра данных для всего приложения
// в хранилище (store) обычно лежит один большой объект — дерево состояния, для всего
// useSelector "селектит" (выбирает) нужный кусок данных из этого глобального состояния
@Cliv-create
Cliv-create / App.tsx
Created June 11, 2025 14:34
react_task_1
import { useState } from 'react'
import reactLogo from './assets/react.svg'
import viteLogo from '/vite.svg'
import './App.css'
function WelcomeMessage() {
return (
<>
<h3>Hello! It's a test project to see how React + Vite and Typescript works!</h3>
<p>My name is <a href="https://github.com/Cliv-create">Cliv-create</a> and im a student learning to become a software engineer!</p>
@sunmeat
sunmeat / different files.jsx
Last active June 14, 2025 13:31
форма регистрации и логина на редаксе
App.jsx:
import {useSelector, useDispatch, Provider} from 'react-redux';
import {configureStore, createSlice, createAsyncThunk} from '@reduxjs/toolkit';
import {useState} from 'react';
import './App.css';
// создание асинхронного thunk для имитации логина
export const loginUser = createAsyncThunk(
'auth/loginUser', // имя действия
@sunmeat
sunmeat / different files.jsx
Last active June 14, 2025 13:49
корзина на редаксе
App.jsx:
import {useSelector, useDispatch, Provider} from 'react-redux';
import {configureStore, createSlice, createAsyncThunk} from '@reduxjs/toolkit';
import {useEffect} from 'react';
import './App.css';
// создание асинхронного thunk для имитации загрузки товаров
export const fetchProducts = createAsyncThunk(
'cart/fetchProducts', // имя действия
@sunmeat
sunmeat / gist:38a6c542cb660f6e5c8113b1f1010318
Created June 11, 2025 14:05
аутентификация на редаксе
import { configureStore, createSlice } from '@reduxjs/toolkit';
import { Provider, useSelector, useDispatch } from 'react-redux';
import { useState } from 'react';
// слайс для аутентификации
const authSlice = createSlice({
name: 'auth',
initialState: {
user: null,
isAuthenticated: false,
@sunmeat
sunmeat / different files.jsx
Last active June 14, 2025 12:17
color theme change (second slice) todo list redux example
App.jsx:
import {useSelector, useDispatch, Provider} from 'react-redux';
import {configureStore, createSlice} from '@reduxjs/toolkit';
import {useState} from 'react';
import './App.css';
// создание среза (slice) для управления задачами
const todoSlice = createSlice({
name: 'todo', // имя среза
@sunmeat
sunmeat / different files.jsx
Last active June 14, 2025 11:57
todo list redux example
App.jsx:
import {useSelector, useDispatch, Provider} from 'react-redux';
import {configureStore, createSlice} from '@reduxjs/toolkit';
import {useState} from 'react';
import './App.css';
// создание среза (slice) для управления задачами
const todoSlice = createSlice({
name: 'todo', // имя среза
@sunmeat
sunmeat / gist:7f29019605a5dec8d0f746f82e50b598
Created June 11, 2025 13:56
заготовка простейшего примера на редакс
import { createStore } from 'redux';
import { Provider, useSelector, useDispatch } from 'react-redux';
// npm install redux react-redux
// редьюсер для счетчика
const counterReducer = (state = { count: 0 }, action) => {
switch (action.type) {
case 'INCREMENT':
return { count: state.count + 1 };
case 'DECREMENT':