DefinitelyTyped/types/react-wait/react-wait-tests.tsx
Paweł Maciejewski 6c72e76f43
fix(react-wait): add missing v0.3 definitions (#42545)
* fix(react-wait): add missing createWaitingContext and waiters definitions

* fix: missing semicolons
2020-02-25 10:54:28 -08:00

72 lines
1.7 KiB
TypeScript

import { useWait, Waiter } from 'react-wait';
const Spinner = () => <img src="https://a.com/spinner.gif" />;
function A() {
const { isWaiting } = useWait();
return (
<div>
{isWaiting('creating user')
? 'Creating User...'
: 'Nothing happens'}
</div>
);
}
function B() {
const { anyWaiting } = useWait();
return (
<div>
{anyWaiting() ? 'Something happening on app...' : 'Nothing happens'}
</div>
);
}
function C() {
const { startWaiting, endWaiting, isWaiting, Wait } = useWait();
function createUser() {
startWaiting('creating user');
// Faking the async work:
setTimeout(() => {
endWaiting('creating user');
}, 1000);
}
return (
<button disabled={isWaiting('creating user')} onClick={createUser}>
<Wait on="creating user" fallback={<Spinner />}>
Create User
</Wait>
</button>
);
}
const MyComponent = () => (
<Waiter>
<C />
</Waiter>
);
function testCreateWaitingContext() {
const { createWaitingContext } = useWait();
const { startWaiting, endWaiting, isWaiting, Wait } = createWaitingContext('creating user');
return (
<div>
<Wait fallback={<Spinner />}>
<button onClick={startWaiting}>Create user</button>
</Wait>
<button disabled={isWaiting()} onClick={endWaiting}>Cancel</button>
</div>
);
}
function testWaiters() {
const { waiters } = useWait();
return (
<ul>
{waiters.map((waiter, index) => <li key={index}>{waiter}</li>)}
</ul>
);
}