From 94c0fd4405994369bb956af8e88a962f2dc9f80f Mon Sep 17 00:00:00 2001 From: Joshua Hsueh Date: Sat, 30 Jan 2021 16:51:29 -0500 Subject: [PATCH] switched back to functional components --- frontend/src/components/Bank.js | 41 +++++++++++++------------ frontend/src/components/Browse.js | 38 +++++++++++------------ frontend/src/components/Portfolio.js | 40 ++++++++++++------------- frontend/src/components/Profile.js | 43 +++++++++++++-------------- website/images/logo.png | Bin 0 -> 19141 bytes 5 files changed, 78 insertions(+), 84 deletions(-) create mode 100644 website/images/logo.png diff --git a/frontend/src/components/Bank.js b/frontend/src/components/Bank.js index 45d5d8e..d89a66b 100644 --- a/frontend/src/components/Bank.js +++ b/frontend/src/components/Bank.js @@ -1,26 +1,25 @@ -import React, { Component } from "react"; -import "./assets/Bank.css"; +import React, { useState, useEffect } from "react"; +import "./assets/Portfolio.css"; -class Bank extends Component { - constructor(props) { - super(props); - this.state = { apiResponse: "" }; - } - callAPI() { +const Portfolio = (props) => { + const [state, setState] = useState({}); + useEffect(() => { + callAPI(); + }); + + const callAPI = () => { fetch("http://localhost:9000/FETCHURL") .then((res) => res.text()) - .then((res) => this.setState()({ apiresponse: res })) + .then((res) => setState(res)) .catch((err) => err); - } - componentDidMount() { - this.callAPI(); - } - render() { - return ( -
-

Bank

-
- ); - } -} + }; + + return ( +
+

Bank

+

+
+ ); +}; + export default Bank; diff --git a/frontend/src/components/Browse.js b/frontend/src/components/Browse.js index 822f691..d5d665c 100644 --- a/frontend/src/components/Browse.js +++ b/frontend/src/components/Browse.js @@ -1,27 +1,25 @@ -import React, { Component } from "react"; +import React, { useState, useEffect } from "react"; import "./assets/Browse.css"; -class Browse extends Component { - constructor(props) { - super(props); - this.state = { apiResponse: "" }; - } - callAPI() { +const Portfolio = (props) => { + const [state, setState] = useState({}); + useEffect(() => { + callAPI(); + }); + + const callAPI = () => { fetch("http://localhost:9000/FETCHURL") .then((res) => res.text()) - .then((res) => this.setState()({ apiresponse: res })) + .then((res) => setState(res)) .catch((err) => err); - } - componentDidMount() { - this.callAPI(); - } - render() { - return ( -
-

Browse

-
- ); - } -} + }; + + return ( +
+

Browse

+

+
+ ); +}; export default Browse; diff --git a/frontend/src/components/Portfolio.js b/frontend/src/components/Portfolio.js index e3b8eb4..1f48ee3 100644 --- a/frontend/src/components/Portfolio.js +++ b/frontend/src/components/Portfolio.js @@ -1,27 +1,25 @@ -import React, { Component } from "react"; +import React, { useState, useEffect } from "react"; import "./assets/Portfolio.css"; -class Portfolio extends Component { - constructor(props) { - super(props); - this.state = { apiResponse: "" }; - } - callAPI() { + +const Portfolio = (props) => { + const [state, setState] = useState({}); + useEffect(() => { + callAPI(); + }); + + const callAPI = () => { fetch("http://localhost:9000/FETCHURL") .then((res) => res.text()) - .then((res) => this.setState()({ apiresponse: res })) + .then((res) => setState(res)) .catch((err) => err); - } - componentDidMount() { - this.callAPI(); - } - render() { - return ( -
-

Portfolio

-

{this.state.apiResponse}

-
- ); - } -} + }; + + return ( +
+

Portfolio

+

+
+ ); +}; export default Portfolio; diff --git a/frontend/src/components/Profile.js b/frontend/src/components/Profile.js index 64fdee9..a378b62 100644 --- a/frontend/src/components/Profile.js +++ b/frontend/src/components/Profile.js @@ -1,26 +1,25 @@ -import React, { Component } from "react"; -import "./assets/Profile.css"; -class Profile extends Component { - constructor(props) { - super(props); - this.state = { apiResponse: "" }; - } - callAPI() { +import React, { useState, useEffect } from "react"; +import "./assets/Portfolio.css"; + +const Portfolio = (props) => { + const [state, setState] = useState({}); + useEffect(() => { + callAPI(); + }); + + const callAPI = () => { fetch("http://localhost:9000/FETCHURL") .then((res) => res.text()) - .then((res) => this.setState()({ apiresponse: res })) + .then((res) => setState(res)) .catch((err) => err); - } - componentDidMount() { - this.callAPI(); - } - render() { - return ( -
-

Profile

-
- ); - } -} + }; -export default Profile; + return ( +
+

Profile

+

+
+ ); +}; + +export default Portfolio; diff --git a/website/images/logo.png b/website/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..be413fc4934dc40a734f4191f3bfd613ab7b01dd GIT binary patch literal 19141 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 literal 0 HcmV?d00001