
Security News
Attackers Are Hunting High-Impact Node.js Maintainers in a Coordinated Social Engineering Campaign
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.
apollo-thunk
Advanced tools
Thunk Middleware for Apollo Client
Apollo-Client by default provides its own middleware for you to use. By using the default middleware your project will load data into the apollo-cache which is simply just a normalized Redux store. It works awesome out of the box... unless you want full control over your global-app state (like in an offline application). This was the inspiration behind apollo-thunk, I loved how apollo-client gave me the tool to easily interact with graphQL queries via variables and fetch-policy setting but needed easy access to my Redux state data so I could manipulate it as desired when offline. Apollo-Thunk keeps the variables and fetch-policy paradigm of apollo while allowing you to interact with graphQL data in a more familiar Redux way and gives you full control over the structure of your Redux store.
Install package via NPM
npm install apollo-thunk
Import apolloThunk in your project replace apollo middleware with apolloThunk passing the apollo-client as a parameter.
import apolloThunk from 'apollo-thunk';
const store = creator(
rootReducer,
{},
compose(
applyMiddleware(apolloThunk(apolloClient))
)
);
Simply dispatch a normal Redux action and some reducers. Either import your query or write in inline. Pass in your variables and other additional options.
See: https://www.apollographql.com/docs/react/api/react-apollo.html#graphql-query-options for a list of all query options.
Apollo-Thunk will do the rest!
export function getData(variables) {
return {
types: [LOAD, LOAD_SUCCESS, LOAD_FAIL],
query: ExampleQuery,
fetchPolicy: 'network-only',
variables: {
...variables
}
};
}
export default function reducer(state = initialState, action = {}) {
switch (action.type) {
case LOAD:
return {
...state,
loading: true,
error: null
};
case LOAD_SUCCESS: {
return {
...state,
loading: false,
loaded: true,
data: action.data
};
}
case LOAD_FAIL:
return {
...state,
loading: false,
loaded: false,
error: action.error.message
};
default:
return state;
}
}
Mutations work the same way as queries but instead specify mutation in your Redux action.
export function updateData(variables) {
return {
types: [UPDATE, UPDATE_SUCCESS, UPDATE_FAIL],
mutation: exampleMutation,
variables: {
... variables
}
};
}
FAQs
Thunk Middleware for Apollo Client
We found that apollo-thunk 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.

Security News
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.

Security News
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.

Security News
Node.js has paused its bug bounty program after funding ended, removing payouts for vulnerability reports but keeping its security process unchanged.