Advertisement
Guest User

Untitled

a guest
Feb 19th, 2020
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.12 KB | None | 0 0
  1. import React from "react";
  2.  
  3. import "./App.css";
  4.  
  5.  
  6. const MyInput = ({ value, onChange }) => (
  7. <input value={value} onChange={onChange} />
  8. )
  9.  
  10. const Task = ({ id, name, descr, priority }) => (
  11. <div>
  12. <div>{id}</div>
  13. <div>{name}</div>
  14. <div>{descr}</div>
  15. <div>{priority}</div>
  16. </div>
  17. );
  18.  
  19. class ClassComponent extends React.Component {
  20. state = {
  21. tasks: [],
  22. id: 1,
  23. name: 'Task name',
  24. descr: 'Task description',
  25. prior: 123,
  26. };
  27.  
  28. handleChange = (event) => {
  29. const newValue = event.target.value;
  30. this.setState(state => ({ name: newValue }));
  31. };
  32. PushNewTask = () => {
  33. this.setState(state => ({ id: state.id + 1 }));
  34. const taski = {
  35. id: this.state.id,
  36. name: this.state.name,
  37. descr: this.state.descr,
  38. prior: this.state.prior,
  39. }
  40. this.setState(state => (state.tasks.push(taski)));
  41. };
  42. byField = (field) => {
  43. return ((a, b) => a[field] > b[field] ? 1 : -1);
  44. }
  45.  
  46. render() {
  47.  
  48. return (
  49. <div className="app">
  50. <MyInput
  51. onChange={this.handleChange}
  52. />
  53. <MyInput
  54. onChange={this.handleChange}
  55. />
  56. <MyInput
  57. onChange={this.handleChange}
  58. />
  59. <button className="content" onClick={() => this.PushNewTask()}>
  60. {"Добавить задание"}
  61. </button>
  62. <button className="content" onClick="this.state.tasks.sort(this.byField('name'))">
  63. {"Сортировать по имени"}
  64. </button>
  65. <button className="content" onClick={() => sortByPriority(this.state.tasks)}>
  66. {"Сортировать по приоритету"}
  67. </button>
  68. <button className="content" onClick={this.state.tasks.sort(this.byField('id'))}>
  69. {"Сортировать по id"}
  70. </button>
  71. <div>
  72. {this.state.tasks.map(task => <Task id={task.id} name={task.name} descr={task.descr} priority={task.prior} />)}
  73. </div>
  74. </div>
  75. );
  76. }
  77. }
  78.  
  79. const App = () => {
  80. return (
  81. <ClassComponent/>
  82. )
  83. }
  84.  
  85. export default App;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement