From 10e56d8aaaba252ee5b15323f04e7d4be4a1c7d5 Mon Sep 17 00:00:00 2001 From: Laktionov Anton Date: Tue, 26 May 2026 20:59:44 +0300 Subject: [PATCH] useMemo --- src/App.jsx | 74 +++++++++++++++++++++++++++++++++++++++++++++++++++- src/main.jsx | 2 -- 2 files changed, 73 insertions(+), 3 deletions(-) diff --git a/src/App.jsx b/src/App.jsx index 6bf3ac6..efae7d7 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -1,10 +1,82 @@ -// удаляем все, оставляя лишь пустую функцию App ниже +import memo, { useMemo, useCallback, useState } from 'react' + +function MyComponent() { + const [count, setCount] = useState(0); + const [name, setName] = useState('John'); + + const greeting = useMemo(() => `Hello, ${name}!`,[name]); + + return ( + <> +

{greeting}

+ + + ) +} + +function MyComponent2() { + const [data,setData] = useState([{theme:'light'}]) + const userPreferences = useMemo(()=>({theme: 'dark', language: 'en'}),[]); + + const processData = useMemo(()=>{ + return data.map(item => ({ ...item,theme: userPreferences.theme })) + },[data, userPreferences]); + console.log(processData); + return ( + <> +

2

+ + + ) +} + +function MyComponent3() { + const sum = useMemo(()=> a+b,[a,b]);//Бессмысленное применение и вредное + + //Применение оправдано + const complexResult = useMemo(()=>{ + return heavyMethOperations(largeDataSet); + },[largeDataSet]) +} + +function ParentComponent({ items }) { + const [filter, setFilter] = useState(''); + + const listProps = useMemo(()=>({ + items: items.filter(item => item.name.includes(filter)), + onItemClick: id => console.log('Clicked',id), + theme: 'dark' + }),[items,filter]); + + return ( + <> + + + + ) +} + +function Memoized(props) { + console.log(props); + return ( + <> +

Memoized

+ {props.items.map((item) => ( + <> +
  • + {item.name} +
  • + ))} + + ) +} function App() { return ( <> {/* Добавьте тестовый контент для проверки */}

    Hello, React!

    + ) } diff --git a/src/main.jsx b/src/main.jsx index 950e96a..7e925e8 100644 --- a/src/main.jsx +++ b/src/main.jsx @@ -4,7 +4,5 @@ import { createRoot } from 'react-dom/client' import App from './App.jsx' createRoot(document.getElementById('root')).render( - - )