Skip to content

Instantly share code, notes, and snippets.

View kaineer's full-sized avatar
:octocat:
⌨️ 🖱️

Sergey Kluchkovsky kaineer

:octocat:
⌨️ 🖱️
View GitHub Profile
@kaineer
kaineer / index.jsx
Created March 4, 2025 10:58
main-component
//
import { useState, useEffect } from 'react';
import { useSelector, useDispatch } from 'react-redux';
import { NewTask } from './NewTask'
import { TaskList } from './TaskList'
import { TodosSlice } from '../../slices/todo';
export const Todos = () => {
const {
selectors: { getTasks },
@kaineer
kaineer / todo.js
Created March 4, 2025 10:56
todo-slice.js
//
import { createSlice } from '@reduxjs/toolkit'
const localStorageKey = 'todos/items';
const initialState = () => {
try {
const storageTasks = JSON.parse(
localStorage.getItem(localStorageKey));
return { tasks: storageTasks }
@kaineer
kaineer / page-user.jsx
Last active February 25, 2025 09:35
UserPage
import { useEffect, useState, useRef } from 'react';
import { useParams } from 'react-router-dom'
import classes from './page-user.module.css'
const InputRow = ({ id, title, value, setValue }) => {
return (
<div className={ classes.row }>
<label htmlFor={ id }>{ title }</label>
<input
@kaineer
kaineer / page-user.jsx
Last active February 21, 2025 09:15
users page
import { useEffect, useState } from 'react';
import { useParams } from 'react-router-dom'
import classes from './page-user.module.css'
export const PageUser = () => {
const { id } = useParams();
const [ user, setUser ] = useState({});
useEffect(() => {
@kaineer
kaineer / PageFetch.jsx
Last active February 18, 2025 10:17
Работа с fetch()
import classes from './page.module.css'
import { useRef, useState } from 'react'
export const PageFetch = () => {
const urlRef = useRef("");
const resultRef = useRef("");
const bodyRef = useRef("{}");
const [method, setMethod] = useState("GET");
const hasBody = ["POST", "PUT"].includes(method);
@kaineer
kaineer / lesson7.md
Created February 14, 2025 11:52
lesson7

План занятия


Часть первая, useState, onChange

  • Создаем страницу, например /page4
  • На страницу помещаем два компонента
  • В каждом компоненте рендерим один текстовый инпут
  • Изменение текста в одном инпуте должно приводить к немедленному изменению текста в другом и наоборот

Ставим redux toolkit

$ npm install -SE react-redux @reduxjs/toolkit

Создаем слайс, который будет хранить состояние

// src/slices/color.js

Пользователи

  • GAME_DIZ
    • YES может просматривать список
    • NO не может что-либо менять
  • ADMINISTRATOR
    • YES - может все

Менторы

  • GAME_DIZ

Компонент по шагам

Предположим, компонент будет называться LikeButton


Создаем файл src/components/LikeButton.jsx

src/
 components/
@kaineer
kaineer / 0205.md
Last active February 5, 2025 08:17

Что не так

  • Общее замечание: надо привыкать раскладывать компоненты по отдельным каталогам и файлам

components/components.jsx

  • const body
    • НЕ НАДО называть компоненты именами существующих тегов. Именно для этого их обычно называют с БОЛЬШОЙ буквы
    • Тег body как правило НЕ заменяют компонентом, просто потому, что первый же компонент находится внутри body