javascript 待办事项列表更新列表中的空字符串

huus2vyu  于 2023-01-07  发布在  Java
关注(0)|答案(3)|浏览(187)

我已经开始了一个实习,我必须使用NEXT JS建立一个待办事项列表。但问题出现了,该应用程序也更新了一个空字符串。我必须在这个问题上工作,并有20多个小时来挖掘一个解决方案。我无法解决它。我试图传递一些参数,但它不工作。

import { useState } from "react"
import '../styles/globals.css'

const index=()=> {
    const [userinput,setuserinput]=useState("")
    const [todolist,settodolist]=useState([])

    const handlechange=(e)=>{
        e.preventDefault()
        if(e.target.value!=""){
            setuserinput(e.target.value)
        }
    }

    const handlesubmit=(e)=> {
        settodolist([
            userinput,
            ...todolist
        ])

        e.preventDefault()
    }

const handledelete=(todo)=>{
 const updatedelete=todolist.filter(todoitem => todolist.indexOf(todoitem) != todolist.indexOf(todo))
 settodolist(updatedelete)
}

    return(
        <div className="FLEX">
            <h3 className="heading">Welcome to Next JS To Do app</h3>
            <form className="FORM">
               <div className="Wrap">
                    <input type="text" onChange={handlechange} placeholder="Enter a todo item" className="INPUT"></input>
                    <button onClick={handlesubmit} className="Button">Submit</button>
               </div>
            </form>
            <ul>
                {
                    todolist.length>=1?todolist.map((todo,idx)=>{
                        return <li key={idx}>{todo} <button onClick={(e)=>{
                            e.preventDefault()
                            handledelete(todo)
                        }}>Delete</button></li>
                    }):"Enter a Todo List"
                }
            </ul>
        </div>
    )
}

export default index
daolsyd0

daolsyd01#

需要将value属性传递给input元素:

<input type="text" value={userinput} onChange={handlechange} placeholder="Enter a todo item" className="INPUT"></input>
rdlzhqv9

rdlzhqv92#

如果你不想让用户提交一个空的项目到todo列表,检查用户输入是否为空。

const handlesubmit = (e) => {
        if (userinput === "") return

        settodolist([
            userinput,
            ...todolist
        ])

        e.preventDefault()
    }
czfnxgou

czfnxgou3#

我相信这个问题是为了防止用户输入一个没有名字的待办事项。在这种情况下,按照前面提到的注解做,并将值prop添加到输入中:
第一个月
然后把它添加到handleSubmit函数中:

const handlesubmit = (e) => {
    e.preventDefault();
    if (userinput != '') {
      settodolist([userinput, ...todolist]);
    }
  };

相关问题