import React from "react";import ReactDOM from "react-dom";import { createEffect, createStore, sample } from "effector";import { useUnit } from "effector-react";
const url = "https://gist.githubusercontent.com/" + "zerobias/24bc72aa8394157549e0b566ac5059a4/raw/" + "b55eb74b06afd709e2d1d19f9703272b4d753386/data.json";
const loadUserClicked = createEvent();
const fetchUserFx = createEffect((url) => fetch(url).then((req) => req.json()));
const $user = createStore(null);
sample({ clock: loadUserClicked, fn: () => url, target: fetchUserFx,});
$user.on(fetchUserFx.doneData, (_, user) => user.username);
const App = () => { const [user, pending] = useUnit([$user, fetchUserFx.pending]); const handleUserLoad = useUnit(loadUserClicked); return ( <div> {user ? <div>current user: {user}</div> : <div>no current user</div>} <button disable={pending} onClick={handleUserLoad}> load user </button> </div> );};
ReactDOM.render(<App />, document.getElementById("root"));
Contributors