Research
Security News
Quasar RAT Disguised as an npm Package for Detecting Vulnerabilities in Ethereum Smart Contracts
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
react-useasync-hooks
Advanced tools
$ npm install react-useasync-hooks --save
or
$ yarn add react-useasync-hooks
In many times we have to run
useEffect(() => {
(async () => {
// some async code
})();
}, [some_depenencies])
And manage it. The code is ugly and there are so many issues managing it. instead we could now run
const status = useAsyncEffect(() => {
// some async code
}, [some_depenencies])
Or
const method = useCallback(() => {
(async() => {
// some async code
})();
});
Or even using timeouts in your code.
Let's set up some types to make the code easier:
type MyType = {
name: string;
isValid: boolean;
};
const [status, callback] = useAsync<MyType>(async () => {
/** call some asynchronous code which returs MyType **/
}, [some_depenencies])
Or if we want to have init status
const [status, callback] = useAsync<MyType>(async (prop1: string, prop2: boolean) => {
/** call some asynchronous code which returs MyType **/
}, {useInit: true} // optional parameter, by default it is set to false
, [some_depenencies])
First argument is funciton and second one, which is not required is configuration, if we would like to see init status. The reason for not seeing init status is in most cases we load stuff and do not care if it is in init state.
The status is either:
status.type === AsyncStatus.INIT
) // only in case useInit is set to true (by default, when props are not set it is set to false) fails back to AsyncStatus.WORKING
when useInit
is set to falsestatus.type === AsyncStatus.WORKING
) // when the callback is workingstatus.type === AsyncStatus.SUCCESS
) // when callback has finished workingstatus.type === AsyncStatus.ERROR
) // when some error happenedstatus.type === AsyncStatus.CANCELLED
) // when user interrupted the codeStatus also might have value (status.value
) which type is MyType
and has always value when status is a success. In other cases it keeps the cached value.
In case of Error it also has an error value (status.error
) which can be second argument in type (useAsync<MyType, ErrorType>
).
The callback
is function to call but also has property to cancel callback.cancel()
which tries to interrupt the call
This is a mix of useAsync
and useEffect
it returns just a status
object which is described above.
It is similar to useAsyncEffect
method except with milliseconds
argument in configuration which defines when to make the call
const [status, callback] = useTimeoutAsync<MyType>(async (prop1: string, prop2: boolean) => {
/** call some asynchronous code which returs MyType **/
}, {useInit: true, milliseconds: 500} // the
, [some_depenencies])
or
const [status, callback] = useTimeoutAsync<MyType>(async (prop1: string, prop2: boolean) => {
/** call some asynchronous code which returs MyType **/
}, {milliseconds: 500} // the
, [some_depenencies])
or defaults to 100
const [status, callback] = useTimeoutAsync<MyType>(async (prop1: string, prop2: boolean) => {
/** call some asynchronous code which returs MyType **/
}
, [some_depenencies])
Everything else works as described at useAsync
Utilizes the useTimeoutAsync
and is mix with useEffect
method and is triggered on dependency changes.
The project is based on the work of @react-hook/async but as it grew I decided to make a stand alone project with less dependencies and some additional configuration changes.
FAQs
React useasync timeout utils
We found that react-useasync-hooks demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
Security News
Research
A supply chain attack on Rspack's npm packages injected cryptomining malware, potentially impacting thousands of developers.
Research
Security News
Socket researchers discovered a malware campaign on npm delivering the Skuld infostealer via typosquatted packages, exposing sensitive data.