App.js 2.0 KB

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