An open API service indexing awesome lists of open source software.

https://github.com/gxlmyacc/react-closure-hooks


https://github.com/gxlmyacc/react-closure-hooks

closure hooks react react-hook use-event use-state use-state-with-promise

Last synced: about 2 months ago
JSON representation

Awesome Lists containing this project

README

          

# react-closure-hooks

reexport react hooks, and add `useEvent`. They are useful for solving the closure problem in react hooks.

[![NPM version](https://img.shields.io/npm/v/react-closure-hooks.svg?style=flat)](https://npmjs.com/package/react-closure-hooks)
[![NPM downloads](https://img.shields.io/npm/dm/react-closure-hooks.svg?style=flat)](https://npmjs.com/package/react-closure-hooks)

## install

```bash
npm install --save react-closure-hooks
```
or
```bash
yarn add react-closure-hooks
```

## usage

```js
// Test
import React from 'react';
import { Search } from 'antd';
import { useState, useEvent } from 'react-closure-hooks';
import API from '@/request';

const Test = () => {
const [searchKey, setSearchKey] = useState('');
const [result, setResult] = useState('');

const doQuery = useEvent(async () => {
const result = await API.query({
searchKey
});
setResult(result);
});

const doSearch = useEvent(async (e) => {
await setSearchKey(e.target.value);
doQuery();
});

return (




{result}


);
};

export default Test;
```

or use `useStateWithPromise`

```js
// Test
import React, { useState } from 'react';
import { Search } from 'antd';
import { useStateWithPromise, useEvent } from 'react-closure-hooks';
import API from '@/request';

const Test = () => {
const [searchKey, setSearchKey] = useStateWithPromise('');
const [result, setResult] = useState('');

const doQuery = useEvent(async () => {
const result = await API.query({
searchKey
});
setResult(result);
});

const doSearch = useEvent(async (e) => {
await setSearchKey(e.target.value);
doQuery();
});

return (




{result}


);
};

export default Test;
```

## License

[MIT](./LICENSE)