UNPKG

generator-rrrw

Version:

react,redux,react-redux-router,webpack,babel,es6,autoprefixer,HMR,css-module

71 lines (59 loc) 1.59 kB
import React, { Component } from 'react' import TodoTextInput from '../TodoTextInput' import classnames from 'classnames' import style from './style.less' class TodoItem extends Component { constructor(props, context) { super(props, context) this.state = { editing: false } } handleDoubleClick() { this.setState({ editing: true }) } handleSave(id, text) { if (text.length === 0) { this.props.deleteTodo(id) } else { this.props.editTodo({ id, text }) } this.setState({ editing: false }) } render() { const {todo, completeTodo, deleteTodo} = this.props let element if (this.state.editing) { element = ( <TodoTextInput text={todo.text} editing={this.state.editing} onSave={(text) => this.handleSave(todo.id, text)} /> ) } else { element = ( <div className={style.view}> <input className={style.toggle} type="checkbox" checked={todo.completed} onChange={() => completeTodo(todo.id)} /> <label onDoubleClick={::this.handleDoubleClick}> {todo.text} </label> <button className={style.destroy} onClick={() => deleteTodo(todo.id)} /> </div> ) } // TODO: compose const classes = classnames({ [style.completed]: todo.completed, [style.editing]: this.state.editing, [style.normal]: !this.state.editing }) return ( <li className={classes}> {element} </li> ) } } export default TodoItem