2017-06-12 9 views
1

onClickイベントは発生していません。todosを追加してtodosを切り替えることができますが、完了したtodosまたはNotCompleted todosをクリックしても何も起こりません。クラス。 todosを追加するための追加があります。それで、todoを打つまたは打ち消すトグルがあります。私が持っている問題はCompletedTodosとNotCompletedTodosのリスト項目です。onClickイベントがReact redux ToDoListアプリケーションで起動しない

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> 
) 
+0

を高めるために、インラインeverytingを行う

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> ) } } 

のようにそれを行う必要があり、我々は、ホールクラスを見ることができますか? –

+0

確かに私は投稿を編集しました – RagingBull

答えて

0

申し訳ありません、しかし、私はそれがコンポーネントの状態や小道具を変更しない 、クリック機能の対象だか分からないので、この成分は表示されません。 onclickのList要素のDOMを返しますが、どこにも、あなたがそれを表示されていない、ので

<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> 
+0

私はリストアイテムタグをクリックするたびにonClickの中にあるすべてのものをレンダリングします。私のミスを修正するにはどうすればいいですか? – RagingBull

+0

'onClick = {e => this.setState({complete:true or false})}'のようなコンポーネントの状態を更新しようとすることができます。このリストをレンダリングするときに、 ' { (1 => one.completed))map(t =>(

  • this.props.todos.filter .toggleTodo(t.id)}> <藤堂藤堂= {T} />
  • ))} ' – chenkehxx

    +0

    が、私はそう、これはReduxの権利の理念に違反することReduxの使用していますか? – RagingBull

    1

    何も起こりません。

    あなたはまた、私は個人的に機能onClickを呼ぶだろうではなく、コードreadability

    関連する問題