Advertisement
Guest User

fugma

a guest
Oct 22nd, 2019
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.65 KB | None | 0 0
  1. import React, { useState } from "react";
  2. import logo from "./logo.svg";
  3. import "./App.css";
  4. import Stat from "./Components/Stat";
  5.  
  6. function App() {
  7. const [name, setName] = useState("");
  8. const [age, setAge] = useState("");
  9. const [race, setRace] = useState("");
  10. const [newStat, setNewStat] = useState("");
  11. const [stats, setStats] = useState([
  12. /*{ statsName: "Strength", statsValue: 20 },
  13. { statsName: "Agility", statsValue: 5 },
  14. { statsName: "Stamina", statsValue: 10 }*/
  15. ]);
  16.  
  17. function randomStatValue() {
  18. return Math.floor(Math.random() * 20 + 1);
  19. }
  20.  
  21. const [newTrait, setNewTrait] = useState("");
  22. const [traits, setTraits] = useState([]);
  23.  
  24. const character = {
  25. name: name,
  26. age: age,
  27. race: race,
  28. traits: traits,
  29. stats: stats
  30. };
  31.  
  32. const handleClick = () => {
  33. alert("Bruh");
  34. };
  35.  
  36. const addTrait = () => {
  37. traits.push(newTrait);
  38. setTraits(traits);
  39. setNewTrait("");
  40. };
  41.  
  42. const addStat = () => {
  43. const newStatObject = {
  44. statsName: newStat,
  45. statsValue: randomStatValue()
  46. };
  47.  
  48. stats.push(newStatObject);
  49. setStats(stats);
  50. setNewStat("");
  51. };
  52. //Remove single stat
  53. const removeStat = index => {
  54. console.log("removeStat clicked, " + index);
  55. const updatedStat = stats.splice(0);
  56. updatedStat.splice(index, 1);
  57. setStats(updatedStat);
  58. };
  59.  
  60. const handleChange = event => {
  61. setName(event.target.value);
  62. /*
  63. if (event.target.value.length >= 3) {
  64. setName("Yes");
  65. } */
  66. };
  67.  
  68. const handleRaceChange = event => {
  69. setRace(event.target.value);
  70. };
  71.  
  72. const handleNewStatChange = event => {
  73. setNewStat(event.target.value);
  74. };
  75.  
  76. const handleNewTraitChange = event => {
  77. setNewTrait(event.target.value);
  78. };
  79.  
  80. const handleAgeChange = event => {
  81. if (!isNaN(event.target.value)) {
  82. setAge(event.target.value);
  83. }
  84. };
  85.  
  86. return (
  87. <div className="App">
  88. <h1>DnD Character Creator</h1>
  89. <input
  90. type="text"
  91. value={name}
  92. onChange={handleChange}
  93. placeholder="Character Name"
  94. />
  95. <input
  96. type="number"
  97. value={age}
  98. onChange={handleAgeChange}
  99. placeholder="Character Age"
  100. />
  101. <input
  102. type="text"
  103. value={race}
  104. onChange={handleRaceChange}
  105. placeholder="Character Race"
  106. />
  107. <input
  108. type="text"
  109. value={newTrait}
  110. onChange={handleNewTraitChange}
  111. placeholder="New Trait"
  112. />
  113. <button onClick={addTrait}>Add Trait</button>
  114. <input
  115. type="text"
  116. value={newStat}
  117. onChange={handleNewStatChange}
  118. placeholder="New Stat"
  119. />
  120. <button onClick={addStat}>Add Stat</button>
  121. <p>
  122. <strong>Name: </strong>
  123. {character.name}
  124. <br></br> <strong>Age: </strong>
  125. {character.age} <br></br>
  126. <strong>Race: </strong>
  127. {character.race}
  128. </p>
  129. <h2> Traits </h2>
  130. <ul>
  131. {character.traits.map((trait, key) => {
  132. return <li key={key}>{trait}</li>;
  133. })}
  134. </ul>
  135. <h2>Stats</h2>
  136. <ul>
  137. {/* Använder map-metoden för att skriva ut en Stat komponent för varje Stat i Stats-arrayen */}
  138. {character.stats.map((stat, key) => {
  139. return (
  140. <Stat
  141. key={key}
  142. stat={stat}
  143. removeFunction={removeStat}
  144. index={key}
  145. />
  146. );
  147. })}
  148. </ul>
  149. <button onClick={handleClick}>Click me!</button>
  150. </div>
  151. );
  152. }
  153.  
  154. export default App;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement