Brian Vaughn
7 years ago
committed by
GitHub
4 changed files with 212 additions and 2 deletions
@ -0,0 +1,103 @@ |
|||
const ToDo = (props) => ( |
|||
<tr> |
|||
<td><label>{props.id}</label></td> |
|||
<td><input/></td> |
|||
<td><label>{props.createdAt.toTimeString()}</label></td> |
|||
</tr> |
|||
); |
|||
|
|||
class ToDoList extends React.Component { |
|||
constructor() { |
|||
super(); |
|||
const date = new Date(); |
|||
const todoCounter = 1; |
|||
this.state = { |
|||
todoCounter: todoCounter, |
|||
list: [ |
|||
{ id: todoCounter, createdAt: date }, |
|||
] |
|||
} |
|||
} |
|||
|
|||
sortByEarliest() { |
|||
const sortedList = this.state.list.sort((a, b) => { |
|||
return a.createdAt - b.createdAt; |
|||
}); |
|||
this.setState({ |
|||
list: [...sortedList] |
|||
}) |
|||
} |
|||
|
|||
sortByLatest() { |
|||
const sortedList = this.state.list.sort((a, b) => { |
|||
return b.createdAt - a.createdAt; |
|||
}); |
|||
this.setState({ |
|||
list: [...sortedList] |
|||
}) |
|||
} |
|||
|
|||
addToEnd() { |
|||
const date = new Date(); |
|||
const nextId = this.state.todoCounter + 1; |
|||
const newList = [ |
|||
...this.state.list, |
|||
{ id: nextId, createdAt: date } |
|||
]; |
|||
this.setState({ |
|||
list: newList, |
|||
todoCounter: nextId |
|||
}); |
|||
} |
|||
|
|||
addToStart() { |
|||
const date = new Date(); |
|||
const nextId = this.state.todoCounter + 1; |
|||
const newList = [ |
|||
{ id: nextId, createdAt: date }, |
|||
...this.state.list |
|||
]; |
|||
this.setState({ |
|||
list: newList, |
|||
todoCounter: nextId |
|||
}); |
|||
} |
|||
|
|||
render() { |
|||
return( |
|||
<div> |
|||
<code>key=index</code><br/> |
|||
<button onClick={this.addToStart.bind(this)}> |
|||
Add New to Start |
|||
</button> |
|||
<button onClick={this.addToEnd.bind(this)}> |
|||
Add New to End |
|||
</button> |
|||
<button onClick={this.sortByEarliest.bind(this)}> |
|||
Sort by Earliest |
|||
</button> |
|||
<button onClick={this.sortByLatest.bind(this)}> |
|||
Sort by Latest |
|||
</button> |
|||
<table> |
|||
<tr> |
|||
<th>ID</th><th></th><th>created at</th> |
|||
</tr> |
|||
{ |
|||
this.state.list.map((todo, index) => ( |
|||
<ToDo |
|||
key={index} |
|||
{...todo} |
|||
/> |
|||
)) |
|||
} |
|||
</table> |
|||
</div> |
|||
) |
|||
} |
|||
} |
|||
|
|||
ReactDOM.render( |
|||
<ToDoList />, |
|||
document.getElementById('root') |
|||
); |
@ -0,0 +1,103 @@ |
|||
const ToDo = (props) => ( |
|||
<tr> |
|||
<td><label>{props.id}</label></td> |
|||
<td><input/></td> |
|||
<td><label>{props.createdAt.toTimeString()}</label></td> |
|||
</tr> |
|||
); |
|||
|
|||
class ToDoList extends React.Component { |
|||
constructor() { |
|||
super(); |
|||
const date = new Date(); |
|||
const toDoCounter = 1; |
|||
this.state = { |
|||
list: [ |
|||
{ id: toDoCounter, createdAt: date }, |
|||
], |
|||
toDoCounter: toDoCounter |
|||
} |
|||
} |
|||
|
|||
sortByEarliest() { |
|||
const sortedList = this.state.list.sort((a, b) => { |
|||
return a.createdAt - b.createdAt; |
|||
}); |
|||
this.setState({ |
|||
list: [...sortedList] |
|||
}) |
|||
} |
|||
|
|||
sortByLatest() { |
|||
const sortedList = this.state.list.sort((a, b) => { |
|||
return b.createdAt - a.createdAt; |
|||
}); |
|||
this.setState({ |
|||
list: [...sortedList] |
|||
}) |
|||
} |
|||
|
|||
addToEnd() { |
|||
const date = new Date(); |
|||
const nextId = this.state.toDoCounter + 1; |
|||
const newList = [ |
|||
...this.state.list, |
|||
{ id: nextId, createdAt: date } |
|||
]; |
|||
this.setState({ |
|||
list: newList, |
|||
toDoCounter: nextId |
|||
}); |
|||
} |
|||
|
|||
addToStart() { |
|||
const date = new Date(); |
|||
const nextId = this.state.toDoCounter + 1; |
|||
const newList = [ |
|||
{ id: nextId, createdAt: date }, |
|||
...this.state.list |
|||
]; |
|||
this.setState({ |
|||
list: newList, |
|||
toDoCounter: nextId |
|||
}); |
|||
} |
|||
|
|||
render() { |
|||
return( |
|||
<div> |
|||
<code>key=id</code><br/> |
|||
<button onClick={this.addToStart.bind(this)}> |
|||
Add New to Start |
|||
</button> |
|||
<button onClick={this.addToEnd.bind(this)}> |
|||
Add New to End |
|||
</button> |
|||
<button onClick={this.sortByEarliest.bind(this)}> |
|||
Sort by Earliest |
|||
</button> |
|||
<button onClick={this.sortByLatest.bind(this)}> |
|||
Sort by Latest |
|||
</button> |
|||
<table> |
|||
<tr> |
|||
<th>ID</th><th></th><th>created at</th> |
|||
</tr> |
|||
{ |
|||
this.state.list.map((todo, index) => ( |
|||
<ToDo |
|||
key={todo.id} |
|||
{...todo} |
|||
/> |
|||
)) |
|||
} |
|||
</table> |
|||
</div> |
|||
) |
|||
} |
|||
} |
|||
|
|||
ReactDOM.render( |
|||
<ToDoList />, |
|||
document.getElementById('root') |
|||
); |
Loading…
Reference in new issue