import React from 'react'; import { Stack, Checkbox, IconButton, TextField, DefaultButton } from 'office-ui-fabric-react'; import { TodoContext } from '../TodoContext'; interface TodoListItemProps { id: string; } interface TodoListItemState { editing: boolean; editLabel: string; } export class TodoListItem extends React.Component { constructor(props: TodoListItemProps) { super(props); this.state = { editing: false, editLabel: undefined }; } render() { const { id } = this.props; const { todos, complete, remove } = this.context; const item = todos[id]; return ( {!this.state.editing && ( <> complete(id)} />
remove(id)} />
)} {this.state.editing && ( Save )}
); } private onEdit = () => { const { id } = this.props; const { todos } = this.context; const { label } = todos[id]; this.setState({ editing: true, editLabel: this.state.editLabel || label }); }; private onDoneEdit = () => { this.context.edit(this.props.id, this.state.editLabel); this.setState({ editing: false, editLabel: undefined }); }; private onChange = (evt: React.FormEvent, newValue: string) => { this.setState({ editLabel: newValue }); }; } TodoListItem.contextType = TodoContext;