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

标签 javascript reactjs redux react-redux dom-events

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/

相关文章:

javascript - 使用 Rollup 混合默认导出和命名导出

javascript - 使用 React hooks 时事件监听器函数发生变化

javascript - 以编程方式更改 Redux-Form 字段值

javascript - react native 。应用程序的关闭事件

javascript - react 堆 :mapStateToProps not rendering the component on state change

javascript - R shiny 在选项卡之间建立链接

javascript - 如何在 CSS 和 HTML 中使用过渡

javascript - 有没有办法对单个页面上的多个项目使用相同的 jQuery Ajax?

javascript - ReactJS - 获取元素的高度

javascript - 样式组件和 Webpack 5 联合模块之间的冲突(无效的钩子(Hook)调用)