Skip to content

Instantly share code, notes, and snippets.

@satsivi
Created March 20, 2018 01:26
Show Gist options
  • Save satsivi/357e04f41d2c95d9d08dab99e9eb7640 to your computer and use it in GitHub Desktop.
Save satsivi/357e04f41d2c95d9d08dab99e9eb7640 to your computer and use it in GitHub Desktop.
import React, { Component } from 'react';
import './App.css';
import fire from './fire';
class App extends Component {
constructor() {
super()
this.state = {
messages: [],
message: ""
}
this.handleChange = this.handleChange.bind(this)
this.handleSubmitClick = this.handleSubmitClick.bind(this)
}
componentDidMount(){
// Loads Messages
let ref = fire.database().ref("/messages")
ref.on('value', (snap) => {
if (snap.val()) {
let msgArr = []
for (let key in snap.val()) {
msgArr.push({
id: key,
message: snap.val()[key].message,
});
}
this.setState({ messages: msgArr });
}
})
}
handleChange(event) {
this.setState({ message: event.target.value });
}
handleSubmitClick(event){
event.preventDefault();
let ref = fire.database().ref("/messages");
// Submits messages to the database.
ref.push().set({message: this.state.message});
this.setState({ message: "" })
}
render() {
return (
<div className="App">
<ul>
<li>Hey There!</li>
{
this.state.messages ? this.state.messages.map((message) =>
<li key={message.id}>{message.message}</li>
) : <li>Your database has no messages. Add some!</li>
}
</ul>
<div className="flex">
<input type="text" value={this.state.message} onChange={this.handleChange}/>
<button onClick={this.handleSubmitClick}>Submit</button>
</div>
</div>
);
}
}
export default App;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment