gpt4 book ai didi

javascript - onClick 事件在 React redux ToDoList 应用程序中未触发

转载 作者:太空宇宙 更新时间:2023-11-04 15:34:38 25 4
gpt4 key购买 nike

onClick 事件根本没有触发。我可以添加待办事项并切换待办事项,但是当我单击“已完成的待办事项”或“未完成的待办事项”时,什么也没有发生。这是该类的完整代码。有一个添加待办事项可以添加待办事项。然后有一个切换按钮可以执行或取消执行待办事项。我遇到的问题是 CompletedTodos 和 NotCompletedTodos 列表项。

   class TodoList extends Component {
render() {

console.log(this.props.todos)
return (
<div className='todo'>
<form id="frm1">
Add To Do: <input type="text" name="fname" id="todo" /><br></br>
<input type="button" onClick={()=> this.props.actions.addTodo(document.getElementById("todo").value)} value="Submit" />
</form>
<div className="visible">
<ul className=" visibility">
<li onClick={ () => {

return(<div> {this.props.todos.map(todo => {
return (<p> {todo.text} </p>)
})}</div>)
}}>

AllToDos


</li>

<li onClick={() => {
return (<div> {this.props.todos.filter(todo => {
if(todo.completed===true) {
return (<p> {todo.text} </p>)
}

})}</div>)
}}>

CompletedToDos

</li>

<li onClick={() => {
return ( <div> {this.props.todos.filter(todo => {
if(todo.completed===false) {
return (<p> {todo.text} </p>)
}
})}</div>)
}}>

NotCompletedToDos

</li>

</ul>
</div>
<ul className='todo__list'>
{this.props.todos.map(t => (
<li key={t.id} className='todo__item' onClick={() => this.props.actions.toggleTodo(t.id)}>
<Todo todo={t} />
</li>
))}
</ul>
</div>
)

最佳答案

没有任何反应,因为 List 元素上的 onclick 返回一个 DOM,但您没有在任何地方显示它。

你应该这样做

class TodoList extends Component {
state = {
displayTodos: []
}
render() {

console.log(this.props.todos)
return (
<div className='todo'>
<form id="frm1">
Add To Do: <input type="text" name="fname" id="todo" /><br></br>
<input type="button" onClick={()=> this.props.actions.addTodo(document.getElementById("todo").value)} value="Submit" />
</form>
<div className="visible">
<ul className=" visibility">
<li onClick={ () => {
var todos = []
todos = this.props.todos.map(todo => {
return (<p> {todo.text} </p>)
})
this.setState({displayTodos: todos})
}}>

AllToDos


</li>

<li onClick={() => {
var todos = [];
this.props.todos.filter(todo => {
if(todo.completed===true) {
todos.push(<p> {todo.text} </p>)
}
})
this.setState({displayTodos: todos})
}}>

CompletedToDos

</li>

<li onClick={() => {
var todos = []
this.props.todos.filter(todo => {
if(todo.completed===false) {
todos.push(<p> {todo.text} </p>)
}
})
this.setState({displayTodos: todos})
}}>

NotCompletedToDos

</li>

</ul>
<div>{this.state.displayTodos}</div>
</div>
<ul className='todo__list'>
{this.props.todos.map(t => (
<li key={t.id} className='todo__item' onClick={() => this.props.actions.toggleTodo(t.id)}>
<Todo todo={t} />
</li>
))}
</ul>
</div>
)
}
}

此外,我个人会调用一个函数onClick,而不是内联执行所有操作来提高代码可读性

关于javascript - onClick 事件在 React redux ToDoList 应用程序中未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44490501/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com