App.js 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. import React, {useState} from 'react';
  2. import logo from './logo.svg';
  3. import './App.css';
  4. const Header = (props) =>
  5. <header>
  6. {console.log(props)}
  7. {console.log(props)}
  8. <img src={logo} className="App-logo" alt="logo" />
  9. <p>
  10. {props.children}
  11. </p>
  12. </header>
  13. const MenuItem = ({service: {url, name}}) =>
  14. <li>
  15. <a href={url}>{name}</a>
  16. </li>
  17. const services = [
  18. {url: 'https://google.com', name: 'Гугл'},
  19. {url: 'https://bing.com', name: 'M$'},
  20. {url: 'https://stackoverflow.com', name: 'спаситель ваш'},
  21. ]
  22. const Aside = () =>
  23. <aside>
  24. <ul>
  25. {services.map(service =><MenuItem service={service}/>)}
  26. </ul>
  27. </aside>
  28. const SuperInput = () => {
  29. const [text, setText] = useState('38')
  30. console.log(text)
  31. return (
  32. <input style={{backgroundColor: text.length <= 2 ? '#FAA' : ''}}
  33. value={text}
  34. onChange={e => setText(e.target.value)}/>)
  35. }
  36. const MyCheckbox = () =>{
  37. const [state, setState] = useState(false)
  38. return (
  39. <div style={{backgroundColor: state ? 'green' : 'red' }}
  40. onClick={() => setState(!state)}>
  41. ТИПА ЧЕКБОКС
  42. </div>
  43. )
  44. }
  45. const Main = () =>
  46. <main>
  47. <h2>контент</h2>
  48. </main>
  49. const Footer = () =>
  50. <footer>
  51. <h2>подвал</h2>
  52. </footer>
  53. const Sum = ({a,b}) =>
  54. <span>
  55. {+a + +b}
  56. </span>
  57. Sum.defaultProps = {a: 0, b: 10}
  58. const GreeterItem = ({children}) =>
  59. <li>
  60. <h3>{children}</h3>
  61. </li>
  62. const Greeter = ({children=["SuperMan", "BatMan", "AlcoMan", "Proctolog-Reactolog"]}) =>
  63. <ul>
  64. {children.map(name => <GreeterItem>{name}</GreeterItem>)}
  65. </ul>
  66. const App = () =>
  67. <div className="App">
  68. <SuperInput />
  69. <MyCheckbox />
  70. <MyCheckbox />
  71. <Header style={{backgroundColor: 'red'}}
  72. shoto>
  73. {["привет", <br/>, " текст"]}
  74. </Header>
  75. <Greeter />
  76. <Header children='непарный чилдрен' />
  77. <Sum a={5} b='10' /><br/>
  78. <Sum a={50} b='1000' />
  79. <div>
  80. <Aside/>
  81. <Main />
  82. </div>
  83. <Footer />
  84. </div>
  85. export default App;