我对JS、React和TypeScript都比较新,我做了一个添加todo-list的教程。为了练习,我决定添加删除按钮和“删除最后一项”按钮。
删除整个列表很顺利(我为自己感到骄傲,哈哈!),但是“删除最后一项”无法正常工作,我尝试了不同的方法(例如仅使用todos.pop()
)。
function App() {
const [todos, setTodos] = useState([])
const [input, setInput] = useState("")
// prevents default, adds input to "todos" array and removes the input from form
const addTodo = (e) => {
e.preventDefault()
setTodos([...todos, input])
setInput("")
}
// deletes the todo-list
const clearTodo = (e) => {
e.preventDefault()
setTodos([])
}
// deletes the last entry from the todo-list
const clearLastTodo = (e) => {
e.preventDefault()
setTodos(todos.pop())
}
return (
<div className="App">
<h1>ToDo Liste</h1>
<form>
<input
value={input}
onChange={(e) => setInput(e.target.value)}
type="text"
/>
<button type="submit" onClick={addTodo}>
Hinzufügen
</button>
</form>
<div>
<h2>Bisherige ToDo Liste:</h2>
<ul>
{todos.map((todo) => (
<li>{todo}</li>
))}
</ul>
</div>
<div>
<form action="submit">
<button type="submit" onClick={clearLastTodo}>
Letzten Eintrag löschen
</button>
<button type="submit" onClick={clearTodo}>
Liste löschen
</button>
</form>
</div>
</div>
);
}
export default App;
我有什么遗漏吗(显然我有,否则它就可以工作了)?但是是什么呢?:D
提前感谢!
splice
和pop
只会用不太理想的替代方案污染这个答案。 - 3limin4t0r