简体   繁体   English

如何在待办事项列表中显示项目

[英]How can I display item in ToDo List

How to make todo list in react.I am following some tutorial how to work with react.如何在反应中制作待办事项列表。我正在关注一些如何使用反应的教程。 This code is using input for adding item to list.此代码使用输入将项目添加到列表。 How can I add item over h3 element instead input element?如何在 h3 元素上添加项目而不是输入元素? This code is working perfect, I am looking for another way.这段代码运行完美,我正在寻找另一种方法。 Thank you Here is full code.谢谢 这里是完整的代码。


import { useState } from 'react'
import { v4 as uuidV4 } from 'uuid'

const Header = () => {
 

const [input, setInput] = useState('')
const [todos, setTodos ] = useState([])

const onInput = (e) => {
  setInput(e.target.value)
  console.log(input)
}

const onFormSubmit = (e) => {
  e.preventDefault()
  setTodos([...todos, {id: uuidV4(), title:input, completed:false}])
  setInput('')
} 

  return (
    <section className='header'>
      <h1>ToDo List</h1>

      <form onSubmit={onFormSubmit}>
          <input 
                type="text"
                placeholder='Add Item'
                className='input'
                value={input}
                required
                onChange={onInput} />

          <button 
                className='btn'
                type='submit' > Add </button>      
      </form>
      <br /><br />
       <ul>
         {todos.map((todo) => (      
         
           <li className='todo-list'>  // here is output 
                                       // <h3> { ? } </h3>  it should go todo.title
                                       // can you show me how, pls ? 
              <input 
                 type="text"
                 value={todo.title}
                 className='list'
                 onChange={(e)=>e.preventDefault()} /> 
                

           </li>
         ))}
       </ul>

    </section>
  )
  
};

export default Header;

Get the title of the todo from the todo object passed to.map() function.从传递给.map() function 的 todo object 中获取 todo 的标题。

<h3>{todo.title}</h3>

 // Get a hook function const {useState} = React; const Header = () => { const [input, setInput] = useState(""); const [todos, setTodos] = useState([]); const onInput = (e) => { setInput(e.target.value); //console.log(input); }; const onFormSubmit = (e) => { e.preventDefault(); setTodos([...todos, { id: Math.random(), title: input, completed: false }]); setInput(""); }; return ( <section className="header"> <h1>ToDo List</h1> <form onSubmit={onFormSubmit}> <input type="text" placeholder="Add Item" className="input" value={input} required onChange={onInput} /> <button className="btn" type="submit"> {" "} Add{" "} </button> </form> <br /> <br /> <ul> {todos.map((todo) => ( <li className="todo-list"> <h3> {todo.title} </h3> <input type="text" value={todo.title} className="list" onChange={(e) => e.preventDefault()} /> </li> ))} </ul> </section> ); }; // Render it ReactDOM.render( <Header />, document.getElementById("react") );
 <script src="https://cdnjs.cloudflare.com/ajax/libs/react/17.0.1/umd/react.production.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/17.0.1/umd/react-dom.production.min.js"></script> <div id="react"></div>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM