Advertisement
Guest User

Untitled

a guest
Mar 25th, 2019
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.24 KB | None | 0 0
  1. import React, { Component } from 'react';
  2. import firebase from '../data/firebase'
  3.  
  4. class Index extends Component {
  5. constructor() {
  6. super();
  7. this.state = {
  8. username: '',
  9. message: '',
  10. messageList: [],
  11. }
  12. this.handleChange = this.handleChange.bind(this);
  13. this.handleSubmit = this.handleSubmit.bind(this);
  14. }
  15.  
  16. componentDidMount() {
  17. const messageListRef = firebase.database().ref('messages');
  18. messageListRef.on('value', (snapshot) => {
  19. let messages = snapshot.val();
  20. let newState = [];
  21. for (let message in messages) {
  22. newState.push({
  23. id: message,
  24. message: messages[message].message,
  25. username: messages[message].username
  26. });
  27. }
  28. this.setState({
  29. messageList: newState
  30. });
  31. });
  32. }
  33.  
  34. handleChange(e) {
  35. this.setState({
  36. [e.target.name]: e.target.value
  37. });
  38. }
  39.  
  40. handleSubmit(e) {
  41. const {username, message} = this.state
  42. e.preventDefault();
  43. const messagesRef = firebase.database().ref('messages');
  44. const messageObject = {
  45. username: username,
  46. message: message,
  47. }
  48. messagesRef.push(messageObject);
  49. this.setState({
  50. message: ''
  51. });
  52. }
  53. renderMessageList() {
  54. const {messageList} = this.state
  55. return (
  56. <div>
  57. {messageList.map((message) => {
  58. return (
  59. <div key={message.id}>
  60. <p>
  61. {message.message}
  62. <br/>
  63. <small>Author: {message.username}</small>
  64. </p>
  65.  
  66. </div>
  67. )
  68. })}
  69. </div>
  70. )
  71. }
  72.  
  73. render() {
  74. const {username, message} = this.state
  75.  
  76. return (
  77. <div className="container">
  78. <h1>Hello World - landing page!</h1>
  79. <form onSubmit={this.handleSubmit}>
  80. <input
  81. type="text" name="username"
  82. placeholder="What's your name?"
  83. onChange={this.handleChange} value={username}
  84. />
  85. <input
  86. type="text" name="message"
  87. placeholder="What do you want to say?"
  88. onChange={this.handleChange} value={message}
  89. />
  90. <button>Send!</button>
  91. </form>
  92. {this.renderMessageList()}
  93. </div>
  94. )
  95. }
  96. }
  97.  
  98. export default Index;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement