Advertisement
Guest User

Untitled

a guest
Jan 7th, 2021
236
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.12 KB | None | 0 0
  1. import React, { useState } from 'react'
  2. import ReactDOM from 'react-dom'
  3. const Statistics = (props) => {
  4. if (props.allClicks.length === 0) {
  5. return (
  6. <div>
  7. do something to get stats
  8. </div>
  9. )
  10. }
  11. return (
  12. <div> <p>good{props.allClicks.good} neutral={props.allClicks.neutral} bad={props.allClicks.bad}</p>
  13. <p> total={props.allClicks.good + props.allClicks.neutral + props.allClicks.bad}</p>
  14. <p>average={props.allClicks.average / (props.allClicks.good + props.allClicks.neutral + props.allClicks.bad)} </p>
  15. <p>positive={(props.allClicks.good) / (props.allClicks.good + props.allClicks.neutral + props.allClicks.bad) * 100} %</p>
  16. </div>
  17. );
  18. }
  19.  
  20. const App = () => {
  21. // save clicks of each button to its own state
  22.  
  23. const [allClicks, setAll] = useState([])
  24. const [clicks, setClicks] = useState({
  25. good: 0, neutral: 0, bad: 0, average:0
  26. })
  27.  
  28. const handleGoodClick = () => {
  29. const newClicks = {
  30. good: clicks.good + 1,
  31. neutral: clicks.neutral,
  32. bad: clicks.bad,
  33. average: clicks.average + 1
  34. }
  35. setAll(allClicks.concat('+1'))
  36. setClicks(newClicks)
  37. }
  38. const handleBadClick = () => {
  39. const newClicks = {
  40. good: clicks.good,
  41. neutral: clicks.neutral,
  42. bad: clicks.bad + 1,
  43. average: clicks.average - 1
  44. }
  45. setAll(allClicks.concat('-1'))
  46. setClicks(newClicks)
  47. }
  48. const handleNeutralClick = () => {
  49. const newClicks = {
  50. good: clicks.good,
  51. neutral: clicks.neutral + 1,
  52. bad: clicks.bad,
  53. average: clicks.average
  54. }
  55. setClicks(newClicks)
  56. setAll(allClicks.concat('0'))
  57. }
  58.  
  59.  
  60.  
  61.  
  62. return (
  63. <div className='Statistics'>
  64. <h1>give feedback</h1>
  65. <button onClick={handleGoodClick}>
  66. good
  67. </button>
  68. <button onClick={handleNeutralClick}>
  69. neutral
  70. </button>
  71. <button onClick={handleBadClick}>
  72. bad
  73. </button>
  74. <Statistics allClicks={allClicks} />
  75.  
  76. </div>
  77.  
  78.  
  79.  
  80.  
  81. )
  82. }
  83.  
  84. ReactDOM.render(<App />,
  85. document.getElementById('root')
  86. )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement