Guest User

Untitled

a guest
Feb 21st, 2018
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.84 KB | None | 0 0
  1. const messages = [
  2. {
  3. content: "Test 1",
  4. date: "2018-01-01"
  5. },
  6. {
  7. content: "Test 2",
  8. date: "2018-02-01"
  9. },
  10. {
  11. content: "Test 3",
  12. date: "2018-02-05"
  13. }
  14. ];
  15.  
  16. const Message = props => (
  17. React.createElement("li", {className: "list-group-item"}, props.content, " - ", React.createElement("small", null, props.date))
  18. );
  19.  
  20. const MessageForm = props => (
  21. React.createElement("form", {onSubmit: (e) => props.submitHandler(e)},
  22. React.createElement("div", {className: "form-group"},
  23. React.createElement("label", null, "Message:"),
  24. React.createElement("textarea", {className: "form-control", row: "3"})
  25. ),
  26. React.createElement("button", {className: "btn btn-success"}, "Send")
  27. )
  28. )
  29.  
  30. class MessageBox extends React.Component {
  31. constructor(props) {
  32. super(props);
  33.  
  34. this.state = {
  35. data: props.data
  36. }
  37. }
  38.  
  39. submitHandler(e) {
  40. e.preventDefault();
  41.  
  42. const textareaNode = e.target.querySelector('textarea'),
  43. content = textareaNode.value,
  44. dateObj = new Date(),
  45. date = `${dateObj.getFullYear()}-${dateObj.getMonth()}-${dateObj.getDate()}`;
  46.  
  47. this.setState(prevState => {
  48. prevState.data.push({content, date});
  49.  
  50. return prevState;
  51. });
  52.  
  53. textareaNode.value = '';
  54. }
  55.  
  56. render() {
  57. const messages = this.state.data.map((item, id) => React.createElement(Message, {key: id, content: item.content, date: item.date}));
  58.  
  59. return (
  60. React.createElement("div", null,
  61. React.createElement("h2", null, "MessageBox"),
  62. React.createElement(MessageForm, {submitHandler: this.submitHandler.bind(this)}),
  63. React.createElement("ul", {className: "list-group"},
  64. messages
  65. )
  66. )
  67. )
  68. }
  69. }
  70.  
  71. ReactDOM.render(
  72. React.createElement(MessageBox, {data: messages}),
  73. document.getElementById('root')
  74. )
Add Comment
Please, Sign In to add comment