import { useState, ChangeEvent, Fragment, useEffect } from 'react'; import axios from 'axios'; import { ApiResponse, Config } from '../../../interfaces'; import InputGroup from '../../UI/Forms/InputGroup/InputGroup'; import Button from '../../UI/Buttons/Button/Button'; interface FormState { WEATHER_API_KEY: string; lat: number; long: number; isCelsius: number; } const WeatherSettings = (): JSX.Element => { const [formData, setFormData] = useState({ WEATHER_API_KEY: '', lat: 0, long: 0, isCelsius: 1 }) const inputChangeHandler = (e: ChangeEvent, isNumber?: boolean) => { let value: string | number = e.target.value; if (isNumber) { value = parseFloat(value); } setFormData({ ...formData, [e.target.name]: value }) } useEffect(() => { axios.get>('/api/config?keys=WEATHER_API_KEY,lat,long,isCelsius') .then(data => { let tmpFormData = { ...formData }; data.data.data.forEach((config: Config) => { let value: string | number = config.value; if (config.valueType === 'number') { value = parseFloat(value); } tmpFormData = { ...tmpFormData, [config.key]: value } }) setFormData(tmpFormData); }) .catch(err => console.log(err)); }, []); return (
inputChangeHandler(e)} /> Using {' '}Weather API inputChangeHandler(e, true)} /> You can use {' '}latlong.net inputChangeHandler(e, true)} />
) } export default WeatherSettings;