App.js 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. import PropTypes from "prop-types";
  2. import React, { Component } from "react";
  3. import logo from "./logo.svg";
  4. import "./App.css";
  5. const appName = "MasterControlProgram";
  6. const titleName = "heading";
  7. class Link extends Component {
  8. render() {
  9. return this.props.hide
  10. ? null
  11. : <a href={this.props.address}>Click</a>;
  12. }
  13. }
  14. Link.propTypes = {
  15. address: PropTypes.string,
  16. hide: PropTypes.bool,
  17. };
  18. const Title = ({ text }) => <div>{text}</div>;
  19. Title.propTypes = {
  20. text: PropTypes.string,
  21. };
  22. class App extends Component {
  23. state = {
  24. input: "",
  25. mainColor: "blue",
  26. on: false,
  27. };
  28. render() {
  29. return (
  30. <div className="App">
  31. <header className="App-header">
  32. <img src={logo} className="App-logo" alt="logo" />
  33. <h1 className="App-title">Welcome to React</h1>
  34. <h3 className={this.state.mainColor}>Everyone is welcome!</h3>
  35. </header>
  36. <Title text="Some title" />
  37. <p className="App-intro">
  38. To get started, edit <code>src/App.js</code> and save to reload.
  39. </p>
  40. <ul className="tyler">
  41. <li>First</li>
  42. <li>Second</li>
  43. <li>Third</li>
  44. </ul>
  45. <p className="button-state">{this.state.on ? "Yes!" : "No!"}</p>
  46. <button onClick={() => this.setState({ on: true })}>Click</button>
  47. <h2>{this.state.input}</h2>
  48. <input type="text" onChange={(e) => this.setState({ input: e.currentTarget.value })} />
  49. </div>
  50. );
  51. }
  52. }
  53. App.displayName = appName;
  54. Title.displayName = titleName;
  55. export { App, Link, appName, titleName };