https://github.com/azmenak/use-saga-reducer
Use redux-saga without redux
https://github.com/azmenak/use-saga-reducer
generators hooks react redux-saga sagas typescript
Last synced: 5 months ago
JSON representation
Use redux-saga without redux
- Host: GitHub
- URL: https://github.com/azmenak/use-saga-reducer
- Owner: azmenak
- Created: 2019-09-06T14:04:36.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2023-01-04T09:14:26.000Z (over 3 years ago)
- Last Synced: 2025-10-13T14:07:53.597Z (8 months ago)
- Topics: generators, hooks, react, redux-saga, sagas, typescript
- Language: TypeScript
- Homepage:
- Size: 626 KB
- Stars: 76
- Watchers: 1
- Forks: 2
- Open Issues: 17
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# use-saga-reducer

[](https://codecov.io/gh/azmenak/use-saga-reducer)
[](https://travis-ci.org/azmenak/use-saga-reducer)

Use sagas without redux! This library provides an abstraction over Redux Saga's
[External API](https://redux-saga.js.org/docs/api/index.html#external-api).
## Install
```
npm install use-saga-reducer
```
## Usage
```tsx
import useSagaReducer from 'use-saga-reducer'
import {takeLatest, call, put} from 'redux-saga/effects'
function* dataFetcher() {
try {
const data = yield call(API.fetchData)
yield put({type: 'FETCH_SUCCESS', payload: data})
} catch (error) {
yield put({type: 'FETCH_ERROR'})
}
}
function* dataFetchingSaga() {
yield takeLatest('FETCH', dataFetcher)
}
function reducer(state = {}, action) {
if (action.type === 'FETCH_SUCCESS') {
return action.payload
}
return state
}
const DataFetchingComponent: React.FC = () => {
const [state, dispatch] = useSagaReducer(dataFetchingSaga, reducer)
return (
<>
{state}
dispatch({type: 'FETCH'})}>Fetch Data
>
)
}
```