Pochwar
Pochwar

Reputation: 726

how to access redux store from custom javascript

I'm trying to implement an external API library in a redux application. I'm fresh new in redux so I don't know exactly how it works.

In my javascript using the API library, I wan't to access info from a container (the user firstanme if he's logged).

After reading some doc, I tried to import the store in my js file, to get the state of the user, but I can't reach the info I need.

Here's the code I tried :

import configureStore from '../store/configureStore';

const store = configureStore();
const state = store.getState();

I get many info in state, but not the one I need. Any help ?

Upvotes: 1

Views: 104

Answers (1)

Yury Tarabanko
Yury Tarabanko

Reputation: 45121

First of all it looks like configureStore creates new store every time you call it. But you need the very that store that your components will use and populate. So you need to somehow access the store you are passing your Provider.

Then since store state is "changing" you can't simply read it once. So your user data might be initially empty but available some time later.

In this case you could make it a Promise

const once = selector => available => new Promise(resolve => {
   store.subscribe(() => {
      const value = selector(value)
      if(available(value)) resolve(value)
   })
})

And usage

 const user = once(state => state.user)(user => user && user.fullName)

 user.then(user => console.log(`User name is ${user.fullName}`)

Or if your data might be changing more than once during application lifecycle you might want to wrap it with something that represent changing data (observable). RX examle

Upvotes: 1

Related Questions