Skip to content

Instantly share code, notes, and snippets.

View Dromediansk's full-sized avatar

Miroslav Pillár Dromediansk

View GitHub Profile
@Dromediansk
Dromediansk / countries.js
Created December 15, 2019 17:35
Call all data of countries
export const getAllCountries = async () => {
try {
const response = await fetch(`https://restcountries.eu/rest/v2/all`);
const responseCountries = await response.json();
return responseCountries;
} catch (err) {
console.log(err);
}
};
@Dromediansk
Dromediansk / CountriesContainer.js
Last active December 22, 2019 11:58
useEffect for getting data
const [countries, setCountries] = useState([]);
const componentIsMounted = useRef(true);
useEffect(() => {
getAllCountries()
.then(response => {
if (componentIsMounted.current) {
setCountries(response);
}
})
@Dromediansk
Dromediansk / CountriesContainer.js
Last active December 22, 2019 12:21
useReducer hook for storing state with multiple values
const CountriesContainer = () => {
const [countries, setCountries] = useState([]);
const componentIsMounted = useRef(true);
const [filterInput, setFilterInput] = useReducer(
(state, newState) => ({ ...state, ...newState }),
{
name: "",
capital: "",
population: ""
}
@Dromediansk
Dromediansk / AdvancedFilter.js
Last active May 17, 2020 11:07
Form with inputs example
import React from "react";
import "./AdvancedFilter.css";
const AdvancedFilter = ({ searchValue, handleChangeValue }) => (
<form className="filter-container">
<input
data-testid="filter-input-name"
type="text"
name="name"
value={searchValue.name}
@Dromediansk
Dromediansk / CountriesContainer.js
Last active December 18, 2019 19:02
filterCountries function
const filterCountries = list => {
return list.filter(item => {
return (
item.name
.toLowerCase()
.includes(
filterInput.name.toLowerCase()
) &&
item.capital
.toLowerCase()
@Dromediansk
Dromediansk / CountriesContainer.js
Created December 18, 2019 19:32
implementation of filter in JSX
return (
<>
<AdvancedFilter
searchValue={filterInput}
handleChangeValue={handleFilterCountries}
/>
<div className="countries-container">
{countriesList.map(country => (
<CountryCard key={country.numericCode} country={country} />
))}
@Dromediansk
Dromediansk / index.js
Created December 28, 2019 15:31
Registering service worker
import React from "react";
import ReactDOM from "react-dom";
import "./index.css";
import App from "./App";
import * as serviceWorker from "./serviceWorker";
ReactDOM.render(<App />, document.getElementById("root"));
serviceWorker.register();
@Dromediansk
Dromediansk / Navbar.js
Last active January 16, 2020 19:12
Navbar in Country Info app
import React from "react";
import "./Navbar.css";
import { NavLink } from "react-router-dom";
const Navbar = () => {
return (
<nav className="nav-container">
<ul className="nav-unordered-list">
<li className="nav-list-item">
<NavLink to="/">Home</NavLink>
@Dromediansk
Dromediansk / App.js
Created January 16, 2020 19:23
Updated App.js in Country Info app
import React, { lazy, Suspense } from "react";
import "./App.css";
import CountriesContainer from "./routes/CountriesContainer";
import { Switch, Route, BrowserRouter as Router } from "react-router-dom";
import Navbar from "./components/Navbar";
import NotFoundPage from "./routes/NotFoundPage";
// pages
const Home = lazy(() => import("./routes/Home"));
const Favourites = lazy(() => import("./routes/Favourites"));
@Dromediansk
Dromediansk / App.js
Created January 18, 2020 15:46
Router implementation
const App = () => {
return (
<Router>
<Navbar />
<Switch>
<Route path="/" component={Home} exact />
<Route path="/data" component={CountriesContainer} />
<Route path="/favourites" component={Favourites} />
<Route component={NotFoundPage} />
</Switch>