Last active
July 17, 2021 12:39
-
-
Save beholderrk/d92e581e04df0f6b36f195e7a0563839 to your computer and use it in GitHub Desktop.
Duplicate react state example 1
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// кое-что поменял | |
// пример лишнего дублирования состояния | |
const Calculator = ({ onResult }) => { | |
const router = useRouter(); | |
const { bondId } = router.query; | |
// дублирование состояния из адресной строки | |
const [selectedBondId, setSelectedBondId] = useState(bondId); | |
const onSubmit = async () => { | |
const result = await someApiCall(selectedBondId); | |
onResult(result); | |
}; | |
return ( | |
<form onSubmit={onSubmit}> | |
<BondSearch | |
setBondId={(value) => { | |
setSelectedBondId(value); | |
}} | |
bondId={selectedBondId} | |
/> | |
<input type="number" name="value" /> | |
<input type="submit" /> | |
</form> | |
); | |
}; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<BondSearch | |
setBondId={(value) => { | |
setSelectedBondId(value); | |
router.push({ query: { ...router.query, bondId: value } }); | |
}} | |
bondId={selectedBondId} | |
/> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const Component = () => { | |
// некий хук который возвращает данные полученные с сервера и ф-ю для запроса этих данных | |
const { fetch, data } = useApi("some/api/endpoint", { initial: [] }); | |
useEffect(() => { | |
// запрашиваем данные | |
fetch(); | |
}, [fetch]); | |
return ( | |
// рендерим полученные данные | |
<RenderDataSummary data={data} /> | |
); | |
}; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const Component = () => { | |
// некий хук который возвращает данные полученные с сервера и ф-ю для запроса этих данных | |
const { fetch, data } = useApi('some/api/endpoint', { initial: [] }); | |
const [chartData, setChartData] = useState([]); | |
useEffect(() => { | |
fetch().then((resp) => setChartData(reduceDataForChart(resp))); | |
}, [fetch]); | |
return ( | |
<> | |
<SomeDataSummary data={data} /> | |
<SomeCharting chartData={chartData} /> | |
</> | |
); | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment