Access Redux store in JavaScript function

javascript, react-redux, reactjs, redux

Solution

`connect()` comes with `react-redux` package which is React bindings for Redux. But if you want to interact with Redux state with usual JavaScript you don't need either `connect()` or `react-redux` for that. You can directly interact with Redux `store` with its API.

As an example, if you want to listen to actions you can use `subscribe()` method as follows and use `getState()` method to access the `state`.

let unsubscribe = store.subscribe(function(){
  const state = store.getState();
})

I'm not much clear what you are trying to achieve, but I hope this will help.

Edit:

You can create your store in one file and export it.

store.js

import { createStore } from 'redux'
import reducers from "./reducers";

const store = createStore(reducers)

export default store;

Now you can import store from any other file and use it.

import store from "./store";

Problem

Is it possible to map redux state to a regular javascript function rather than a React component? If not, is there another way for connecting redux state to a function? (obviously without explicitly passing it in as a param) I have tried connecting to a function, but it breaks (I don't have an exact error message. the server just hits an uncaughtException). Since React components can be pure functions, does `connect()` only work with a `class ComponentName extends Component` (and the likes)? The reason I want to do such a thing: I have an redux action generator, and I want the generator to skip doing an API call if it finds the action's result already in the redux state, but I don't want to have to check state explicitly from every container for every single api call. Does this make sense? Thanks for any ideas.

Original source

Related problems