Skip to content
Snippets Groups Projects
Commit b4b0f2ff authored by Mehmet Salih Hasanoglu's avatar Mehmet Salih Hasanoglu
Browse files

first attempt

parent ba8e7242
No related branches found
No related tags found
No related merge requests found
import logo from './logo.svg'; import React, { Component } from "react";
import './App.css'; import Counters from "./components/counters";
import "./App.css";
function App() { import logo from "./ZRoom_Logo.png";
return (
<div className="App"> //import { render } from "@testing-library/react";
<header className="App-header">
<img src={logo} className="App-logo" alt="logo" /> class App extends Component {
<p> state = {
Edit <code>src/App.js</code> and save to reload. counters: [
</p> { id: 1, value: "Frage?" },
<a { id: 2, value: 0 },
className="App-link" { id: 3, value: 0 },
href="https://reactjs.org" ],
target="_blank" };
rel="noopener noreferrer" constructor() {
> super();
Learn React console.log("App - Constructor");
</a> }
</header>
</div> componentDidMount() {
); console.log("App - Mounted");
}
handleIncrement = (counter) => {
const counters = [...this.state.counters];
const index = counters.indexOf(counter);
counters[index] = { ...counter };
counters[index].value++;
const requestURL = "http://localhost:5000/lamp/" + counters[index].id + "/activate"
fetch(requestURL)
this.setState({ counters });
};
handleReset = () => {
const counters = this.state.counters.map((c) => {
c.value = 0;
return c;
});
this.setState({ counters });
};
handleDelete = (counterId) => {
const counters = this.state.counters.filter((c) => c.id !== counterId);
this.setState({ counters });
};
render() {
console.log("App - Rendered");
return (
<React.Fragment>
<main className="container">
<img src={logo} alt="ZRoom Logo" class="rounded mx-auto d-block m-5" />
<Counters
counters={this.state.counters}
onReset={this.handleReset}
onIncrement={this.handleIncrement}
onDelete={this.handleDelete}
/>
</main>
</React.Fragment>
);
}
} }
export default App; export default App;
frontend/src/ZRoom_Logo.png

13.9 KiB

import React, { Component } from "react";
class Counter extends Component {
getBadgeClasses() {
let classes = "badge m-2 bg-";
classes += this.props.counter.value === 0 ? "warning text-dark" : "primary";
return classes;
}
formatCount() {
const { value } = this.props.counter;
return value === 0 ? "Zero" : value;
}
componentDidUpdate(prevProps, prevState) {
console.log("prevProps", prevProps);
console.log("prevState", prevState);
if (prevProps.counter.value !== this.props.counter.value) {
// Ajax call and get new data from the server
}
}
componentWillUnmount() {
console.log("Counter - Unmount");
}
render() {
console.log("Counter - Rendered");
return (
<div>
<span className={this.getBadgeClasses()}>{this.formatCount()}</span>
<button
onClick={() => this.props.onIncrement(this.props.counter)}
className="btn btn-secondary btn-sm"
>
Increment
</button>
<button
onClick={() => this.props.onDelete(this.props.counter.id)}
className="btn btn-danger btn-sm m-2"
>
Delete
</button>
</div>
);
}
}
// constructor() {
// super();
// this.handleIncrement = this.handleIncrement.bind(this);
// }
export default Counter;
import React, { Component } from "react";
import Counter from "./counter";
class Counters extends Component {
render() {
console.log("Counters - Rendered");
const { onReset, counters, onDelete, onIncrement } = this.props;
return (
<div>
<button onClick={onReset} className="btn btn-primary btn-sm m-2">
Reset
</button>
{counters.map((counter) => (
<Counter
key={counter.id}
onDelete={onDelete}
onIncrement={onIncrement}
counter={counter}
/>
))}
</div>
);
}
}
export default Counters;
<div></div>;
import React from 'react'; import React from "react";
import ReactDOM from 'react-dom'; import ReactDOM from "react-dom";
import './index.css'; import "./index.css";
import App from './App'; import App from "./App";
import reportWebVitals from './reportWebVitals'; import reportWebVitals from "./reportWebVitals";
import "bootstrap/dist/css/bootstrap.css";
ReactDOM.render( ReactDOM.render(<App />, document.getElementById("root"));
<React.StrictMode>
<App />
</React.StrictMode>,
document.getElementById('root')
);
// If you want to start measuring performance in your app, pass a function // If you want to start measuring performance in your app, pass a function
// to log results (for example: reportWebVitals(console.log)) // to log results (for example: reportWebVitals(console.log))
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment