restructured folder
|
Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 3.8 KiB |
|
Before Width: | Height: | Size: 5.2 KiB After Width: | Height: | Size: 5.2 KiB |
|
Before Width: | Height: | Size: 9.4 KiB After Width: | Height: | Size: 9.4 KiB |
@@ -0,0 +1,41 @@
|
|||||||
|
import React, { useState, useEffect } from 'react'
|
||||||
|
import axios from 'axios'
|
||||||
|
import Filter from './components/Filter'
|
||||||
|
|
||||||
|
const App = () => {
|
||||||
|
|
||||||
|
const [newSearch, setNewSerach] = useState('')
|
||||||
|
const [CountryList, setCountryList] = useState([])
|
||||||
|
|
||||||
|
const handleSearchChange =(event) => {
|
||||||
|
setNewSerach(event.target.value)
|
||||||
|
}
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
axios
|
||||||
|
.get('https://restcountries.eu/rest/v2/all')
|
||||||
|
.then(response => {
|
||||||
|
setCountryList(response.data)
|
||||||
|
console.log(CountryList)
|
||||||
|
})
|
||||||
|
}, [])
|
||||||
|
|
||||||
|
|
||||||
|
const filtered = CountryList.filter(country => country.name.toLowerCase().includes(newSearch.toLowerCase()))
|
||||||
|
console.log(newSearch.toLowerCase())
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<h2>Country</h2>
|
||||||
|
<Filter value={newSearch} onChange={handleSearchChange} />
|
||||||
|
|
||||||
|
{
|
||||||
|
filtered.length > 10 ?
|
||||||
|
'Too many matches, specific another filter' :
|
||||||
|
filtered.map(item => <p key={item.alpha2Code}>{item.name}</p>)
|
||||||
|
}
|
||||||
|
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export default App
|
||||||
@@ -6,6 +6,7 @@
|
|||||||
"@testing-library/jest-dom": "^5.14.1",
|
"@testing-library/jest-dom": "^5.14.1",
|
||||||
"@testing-library/react": "^11.2.7",
|
"@testing-library/react": "^11.2.7",
|
||||||
"@testing-library/user-event": "^12.8.3",
|
"@testing-library/user-event": "^12.8.3",
|
||||||
|
"axios": "^0.21.1",
|
||||||
"react": "^17.0.2",
|
"react": "^17.0.2",
|
||||||
"react-dom": "^17.0.2",
|
"react-dom": "^17.0.2",
|
||||||
"react-scripts": "4.0.3",
|
"react-scripts": "4.0.3",
|
||||||
@@ -15,7 +16,8 @@
|
|||||||
"start": "react-scripts start",
|
"start": "react-scripts start",
|
||||||
"build": "react-scripts build",
|
"build": "react-scripts build",
|
||||||
"test": "react-scripts test",
|
"test": "react-scripts test",
|
||||||
"eject": "react-scripts eject"
|
"eject": "react-scripts eject",
|
||||||
|
"server": "json-server -p3001 --watch db.json"
|
||||||
},
|
},
|
||||||
"eslintConfig": {
|
"eslintConfig": {
|
||||||
"extends": [
|
"extends": [
|
||||||
@@ -34,5 +36,8 @@
|
|||||||
"last 1 firefox version",
|
"last 1 firefox version",
|
||||||
"last 1 safari version"
|
"last 1 safari version"
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"json-server": "^0.16.3"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 3.8 KiB |
|
Before Width: | Height: | Size: 5.2 KiB After Width: | Height: | Size: 5.2 KiB |
|
Before Width: | Height: | Size: 9.4 KiB After Width: | Height: | Size: 9.4 KiB |
@@ -1,19 +1,26 @@
|
|||||||
import React, { useState } from 'react'
|
import React, { useState, useEffect } from 'react'
|
||||||
|
import axios from 'axios'
|
||||||
import Filter from './components/Filter'
|
import Filter from './components/Filter'
|
||||||
import PersonForm from './components/PersonForm'
|
import PersonForm from './components/PersonForm'
|
||||||
import Person from './components/Person'
|
import Person from './components/Person'
|
||||||
|
|
||||||
const App = () => {
|
const App = () => {
|
||||||
const [ persons, setPersons ] = useState([
|
const [ persons, setPersons ] = useState([])
|
||||||
{ name: 'Arto Hellas', number: '040-123456' },
|
|
||||||
{ name: 'Ada Lovelace', number: '39-44-5323523' },
|
|
||||||
{ name: 'Dan Abramov', number: '12-43-234345' },
|
|
||||||
{ name: 'Mary Poppendieck', number: '39-23-6423122' }
|
|
||||||
])
|
|
||||||
const [ newName, setNewName ] = useState('')
|
const [ newName, setNewName ] = useState('')
|
||||||
const [ newNumber, setNewNumber ] = useState('')
|
const [ newNumber, setNewNumber ] = useState('')
|
||||||
const [ newSearch, setNewSearch ] = useState('')
|
const [ newSearch, setNewSearch ] = useState('')
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
axios
|
||||||
|
.get('http://localhost:3001/persons')
|
||||||
|
.then(response => {
|
||||||
|
console.log('promise fulfilled')
|
||||||
|
setPersons(response.data)
|
||||||
|
})
|
||||||
|
}, [])
|
||||||
|
|
||||||
|
//console.log(persons)
|
||||||
|
|
||||||
const handleNameChange = (event) => {
|
const handleNameChange = (event) => {
|
||||||
//console.log(event.target.value)
|
//console.log(event.target.value)
|
||||||
setNewName(event.target.value)
|
setNewName(event.target.value)
|
||||||