🚧 Partial BuckleScript bindings for react-async v8. This will be updated if needed.
yarn add @dck/bs-react-async
Add it to bs-dependencies
in your bsconfig.json
:
{
"bs-dependencies": ["@dck/bs-react-async"]
}
open BsReactAsync;
let fetchSomeData = () => serviceThatReturnAPromise();
[@react.component]
let make = () => {
let request = ReactAsync.useAsync(fetchSomeData, ());
let isLoading = request->ReactAsync.Req.isLoading;
let error = request->ReactAsync.Req.error->Js.Nullable.toOption;
let data = request->ReactAsync.Req.data;
{
switch (isLoading, error, data) {
| (true, _, _) => <p>"Loading"->React.string</p>
| (false, Some(e), _) => <p>
{
error
->Js.Exn.message
->Belt.Option.getWithDefault("An error occured")
|> React.string
}
</p>
| (false, None, data) => {
Js.log(data);
<div>
"show data"->React.string
</div>
}
}
}
};
open BsReactAsync;
let fetchSomeData = () => serviceThatReturnAPromise();
[@react.component]
let make = () => {
let request = ReactAsync.useAsync(fetchSomeData, ());
<>
<Pending state=request>
<p>"Loading"->React.string</p>
</Pending>
<Rejected state=request>
{
error =>
<p>
{
error
->Js.Exn.message
->Belt.Option.getWithDefault("An error occured")
|> React.string
}
</p>
}
</Rejected>
<Fulfilled state=request>
{
data => {
Js.log(data);
<div>
"show data"->React.string
</div>
}
}
</Fulfilled>
</>
};