/
rxeev
/
react_currency_convertor
Обзор
Документация
Войти
/
rxeev
/
react_currency_convertor
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/App.js
61 строка
2 KB
unknown
first commit
27 сен 2022, 22:36
27 сен 2022, 22:36
780c5e9
Код
Авторство
О чём код?
import React from 'react'; import { Block } from './Block'; import './index.scss'; function App() { // const [rates, setRates] = React.useState({}) const [fromCurrency, setFromCurrency] = React.useState('RUB') const [toCurrency, setToCurrency] = React.useState('USD') const [fromPrice, setFromPrice] = React.useState(0) const [toPrice, setToPrice] = React.useState(1) const ratesRef = React.useRef({}) React.useEffect(() => { fetch('https://cdn.cur.su/api/cbr.json').then((res) => res.json()).then((json) => { ratesRef.current=json.rates onChangeToPrice(1) }) .catch((err) => { console.warn(err) alert('Сервер не алло...') }) }, []) const onChangeFromPrice = (value) => { const prise = value / ratesRef.current[fromCurrency] const result = prise * ratesRef.current[toCurrency] setToPrice(result.toFixed(3)) setFromPrice(value) } const onChangeToPrice = (value) => { const result = (ratesRef.current[fromCurrency] / ratesRef.current[toCurrency]) * value setFromPrice(result.toFixed(3)) setToPrice(value) } React.useEffect(() => { onChangeFromPrice(fromPrice) }, [fromCurrency]) React.useEffect(() => { onChangeToPrice(toPrice) }, [toCurrency]) return ( <div className="App"> <Block value={fromPrice} currency={fromCurrency} onChangeCurrency={setFromCurrency} onChangeValue={onChangeFromPrice} /> <Block value={toPrice} currency={toCurrency} onChangeCurrency={setToCurrency} onChangeValue={onChangeToPrice} /> </div> ); } export default App;