Skip to content

Instantly share code, notes, and snippets.

@beholderrk
Last active July 17, 2021 12:39
Show Gist options
  • Save beholderrk/d92e581e04df0f6b36f195e7a0563839 to your computer and use it in GitHub Desktop.
Save beholderrk/d92e581e04df0f6b36f195e7a0563839 to your computer and use it in GitHub Desktop.
Duplicate react state example 1
// кое-что поменял
// пример лишнего дублирования состояния
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>
);
};
<BondSearch
setBondId={(value) => {
setSelectedBondId(value);
router.push({ query: { ...router.query, bondId: value } });
}}
bondId={selectedBondId}
/>
const Component = () => {
// некий хук который возвращает данные полученные с сервера и ф-ю для запроса этих данных
const { fetch, data } = useApi("some/api/endpoint", { initial: [] });
useEffect(() => {
// запрашиваем данные
fetch();
}, [fetch]);
return (
// рендерим полученные данные
<RenderDataSummary data={data} />
);
};
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