App.js 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. import React, {useState, useEffect} from 'react';
  2. import logo from './logo.svg';
  3. import './App.css';
  4. const Spoiler = ({header = '+', open, children}) => {
  5. const [display, setDisplay] = useState(open)
  6. return (
  7. <div>
  8. <div onClick={() => setDisplay(!display)}>
  9. {header}
  10. </div>
  11. <div>
  12. {display ? children : null}
  13. </div>
  14. </div>
  15. )
  16. };
  17. const RangeInput = ({min, max}) => {
  18. const [inputNumber, setInputNumber] = useState('')
  19. return (
  20. <div>
  21. <input type = 'text' style ={{ background: inputNumber.length < min || inputNumber.length > max ? 'red' : null }}
  22. onChange={(e) => setInputNumber(e.target.value)}
  23. />
  24. </div>
  25. )
  26. }
  27. function App() {
  28. return (
  29. <div className="App">
  30. <Spoiler header={<h1>Заголовок</h1>} open>
  31. Контент 1
  32. <p>
  33. лорем ипсум траливали и тп.лорем ипсум траливали и тп.лорем ипсум траливали и тп.лорем ипсум траливали и тп.лорем ипсум траливали и тп.
  34. </p>
  35. </Spoiler>
  36. <Spoiler>
  37. <h2>Контент 2</h2>
  38. <p>
  39. лорем ипсум траливали и тп.лорем ипсум траливали и тп.лорем ипсум траливали и тп.лорем ипсум траливали и тп.лорем ипсум траливали и тп.
  40. </p>
  41. </Spoiler>
  42. <RangeInput min={2} max={10} />
  43. {/* <RangeInputParent></RangeInputParent> */}
  44. </div>
  45. );
  46. }
  47. export default App;