Advertisement
Guest User

FactsHandler2.0.js

a guest
Jan 10th, 2021
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //Template from https://github.com/lape15/todo-inline
  2.  
  3. import React, { useState, useEffect } from "react";
  4. import Item from "./Item";
  5.  
  6. var content = "default";
  7.  
  8. const FactsHandler = (props) => {
  9.   const [todos, setTodos] = useState([]);
  10.   const [todo, setTodo] = useState("");
  11.  
  12.   useEffect(() => {
  13.     if (localStorage.items) {
  14.       setTodos(JSON.parse(localStorage.getItem("items")));
  15.     } else {
  16.       setTodos([]);
  17.     }
  18.   }, []);
  19.   const handleChange = (e) => {
  20.     setTodo(e.target.value);
  21.   };
  22.  
  23.   const handleSubmit = (e) => {
  24.     e.preventDefault();
  25.     if (todo === "") {
  26.       return;
  27.     }
  28.     let todoObject = {
  29.       id: todos.length + 1,
  30.       task: todo,
  31.       completed: false,
  32.     };
  33.     //localStorage.setItem("items", JSON.stringify([...todos, todoObject]));
  34.     setTodos([...todos, todoObject]);
  35.     setTodo("");
  36.   };
  37.  
  38.   const completedTodo = (index) => {
  39.     const newList = todos.map((list) => {
  40.       if (list.id === index) {
  41.         list.completed = !list.completed;
  42.       }
  43.  
  44.       return list;
  45.     });
  46.     //localStorage.setItem("items", JSON.stringify(newList));
  47.     setTodos(newList);
  48.   };
  49.  
  50.   props.logValue === true ? content = (
  51.   <div className="container">
  52.     <h1 className="numberFacts">Add your own fact!</h1>
  53.       {" "}
  54.       <div className="body">
  55.         {" "}
  56.            
  57.         <div className="todo-form">
  58.           {" "}
  59.           <form onSubmit={handleSubmit}>
  60.             <label>
  61.               <input
  62.                 type="text"
  63.                 value={todo}
  64.                 name="todo"
  65.                 onChange={handleChange}
  66.               />
  67.             </label>
  68.             <br/>
  69.             <button className="button-styles" type="submit">Submit</button>
  70.           </form>
  71.         </div>
  72.         <div className="tableDiv">
  73.           {todos.length > 0 ? (
  74.           <table>
  75.           <tbody>
  76.             <tr>
  77.                   {todos.map((todoItem) => {
  78.                     console.log("todoItem :" +todoItem.id);
  79.                     return (
  80.                       <Item
  81.                         todoItem={todoItem}
  82.                         completedTodo={completedTodo}
  83.                         setTodos={setTodos}
  84.                         todos={todos}
  85.                         key={todoItem.id}
  86.                      />
  87.                     );
  88.                   })}
  89.  
  90.             </tr>
  91.         </tbody>
  92.         </table>
  93.           ) : (
  94.             <div></div>
  95.           )}
  96.         </div>
  97.       </div>
  98.     </div>) : content = ""
  99.  
  100.   return (
  101.     <div className="Table">
  102.           <header className="App-bg">
  103.             <div className="data-div">
  104.                 {content}
  105.             </div>
  106.           </header>
  107.  
  108.       </div>)
  109. };
  110.  
  111. export default FactsHandler;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement