UNPKG

recoil

Version:

Recoil - A state management library for React

95 lines (77 loc) 2.65 kB
/** * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * * @emails oncall+recoil * @flow strict-local * @format */ 'use strict'; import type { RecoilState } from 'Recoil_RecoilValue'; const { useRecoilValue } = require('../../hooks/Recoil_Hooks'); const atom = require('../Recoil_atom'); const readOnlySelector = require('../Recoil_readOnlySelector'); const { noWait, waitForAll, waitForNone } = require('../Recoil_WaitFor'); const numberAtom: RecoilState<number> = atom({ key: 'number', default: 0 }); const stringAtom: RecoilState<string> = atom({ key: 'string', default: '' }); // eslint-disable-next-line no-unused-vars let num: number; // eslint-disable-next-line no-unused-vars let str: string; ////////////// // waitForAll ////////////// // Test tuple unwrapping of types // eslint-disable-next-line fb-www/react-hooks const arrayResults = useRecoilValue( // $FlowExpectedError waitForAll([readOnlySelector(numberAtom), readOnlySelector(stringAtom)])); num = arrayResults[0]; str = arrayResults[1]; num = arrayResults[1]; // $FlowExpectedError str = arrayResults[0]; // Test object unwrapping of types // eslint-disable-next-line fb-www/react-hooks const objResults = useRecoilValue( // $FlowExpectedError waitForAll({ num: numberAtom, str: stringAtom })); num = objResults.num; str = objResults.str; num = objResults.str; // $FlowExpectedError str = objResults.num; ////////////// // waitForNone ////////////// // Test tuple unwrapping of types // eslint-disable-next-line fb-www/react-hooks const arrayResultsNone = useRecoilValue( // $FlowExpectedError waitForNone([readOnlySelector(numberAtom), readOnlySelector(stringAtom)])); num = arrayResultsNone[0].valueOrThrow(); str = arrayResultsNone[1].valueOrThrow(); num = arrayResultsNone[1].valueOrThrow(); // $FlowExpectedError str = arrayResultsNone[0].valueOrThrow(); // Test object unwrapping of types // eslint-disable-next-line fb-www/react-hooks const objResultsNone = useRecoilValue( // $FlowExpectedError waitForNone({ num: numberAtom, str: stringAtom })); num = objResultsNone.num.valueOrThrow(); str = objResultsNone.str.valueOrThrow(); num = objResultsNone.str.valueOrThrow(); // $FlowExpectedError str = objResultsNone.num.valueOrThrow(); ////////////// // noWait ////////////// num = useRecoilValue(noWait(numberAtom)).valueOrThrow(); // eslint-disable-line fb-www/react-hooks // $FlowExpectedError str = useRecoilValue(noWait(numberAtom)).valueOrThrow(); // eslint-disable-line fb-www/react-hooks