diff --git a/src/App.jsx b/src/App.jsx index 6bf3ac6..85dfb01 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -1,10 +1,96 @@ -// удаляем все, оставляя лишь пустую функцию App ниже +import React from 'react' +import styles from './App.module.scss' + +class Clock extends React.Component { + constructor(props) { + super(props); + this.state = { date: new Date() }; + } + componentDidMount() { + this.timerId = setInterval( () => this.tick(), 1000); + } + componentWillUnmount() { + clearInterval(this.timerId) + } + tick() { + this.setState({ date: new Date() }) + } + render() { + return
{this.state.date.toLocaleTimeString()}
+ } +} + +function Clock2() { + const [date, setDate] = React.useState(new Date()); + + React.useEffect(()=>{ + const timerId = setInterval(()=> setDate(new Date()),1000); + return () => clearInterval(timerId); + },[]) + + return
{date.toLocaleTimeString()}
+} + +function MouseTracker() { + const [x,setX] = React.useState(0); + const [y,setY] = React.useState(0); + + const mouseMoveHandler = event => { + setX(event.clientX); + setY(event.clientY); + } + + React.useEffect(()=>{ + document.addEventListener('mousemove', mouseMoveHandler); + return () => { + document.removeEventListener('mousemove',mouseMoveHandler); + } + },[]); + + return
+

Координаты мыши:
X:{x}, Y:{y}

+
+} + +function DataFetcher() { + const [posts,setPosts] = React.useState([]); + const [users,setUsers] = React.useState([]); + + const getPosts = async () => { + const response = await fetch('https://jsonplaceholder.typicode.com/posts'); + const data = await response.json(); + setUsers(data.reduce((acc, value) => { + if (!(value.userId in acc)) + return [...acc,value.userId] + return acc + })) + console.log(users); + setPosts(data.slice(1,10)); + + } + + React.useEffect(() => { + console.log("Компонент создан"); + getPosts(); + return () => {console.log("Компонент удален");setPosts([])}; + },[]) + + return
    {posts.map(post =>
  1. {post.title}
  2. )}
+} function App() { + const [tracker,setTracker] = React.useState(false); + const [dataFetcher,setDataFetcher] = React.useState(false); + return ( <> - {/* Добавьте тестовый контент для проверки */}

Hello, React!

+ + + + { tracker && } + + { dataFetcher && } ) }