Guest User

Untitled

a guest
Feb 24th, 2018
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.19 KB | None | 0 0
  1. import React, { Component } from 'react';
  2. import _ from 'lodash';
  3.  
  4. class MealPlan extends Component {
  5. state = {
  6. meal: '',
  7. meals: [],
  8. showAddMealMessage: false
  9. };
  10.  
  11. renderMeals() {
  12. return _.map(this.state.meals, meal => <li>{meal}</li>);
  13. }
  14.  
  15. componentWillMount() {
  16. this.setState({meals: ["Eggs with bacon", "Spaghetti carbonara", "Oatmeal"]});
  17. }
  18.  
  19. componentDidUpdate(prevProps, prevState) {
  20. if (prevState.meals.length < this.state.meals.length) {
  21. this.setState({showAddMealMessage: true});
  22. setTimeout(() => this.setState({showAddMealMessage: false}), 1000);
  23. }
  24. }
  25.  
  26. render() {
  27. return(
  28. <div>
  29. <h2>Today you should eat this</h2>
  30. <form>
  31. <input
  32. onChange={e => this.setState({meal: e.target.value})}
  33. value={this.state.meal}
  34. type="text"
  35. />
  36. <button
  37. onClick={() => this.setState({meals: [...this.state.meals, this.state.meal]})}
  38. type="submit">Add meal</button>
  39. </form>
  40. {this.state.showAddMealMessage ? <p>New meal added</p> : null}
  41. <ul>
  42. {this.renderMeals()}
  43. </ul>
  44. </div>
  45. );
  46. }
  47. }
  48.  
  49. export default MealPlan;
Add Comment
Please, Sign In to add comment