Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

TypeError: undefined is not an object (evaluating 'store.getState')

I'm following the Let’s Build: Cryptocurrency Native Mobile App With React Native + Redux tutorial.

When I create my store in App.js, the app works fine

import { createStore, applyMiddleware, compose } from 'redux';
import devTools from 'remote-redux-devtools';
import React, { Component } from 'react';
import { Platform, View } from 'react-native';
import { Provider } from 'react-redux';
import promise from 'redux-promise';
import thunk from 'redux-thunk';
import logger from 'redux-logger';

import { Header, CryptoContainer } from './src/components';
import rootReducer from './src/reducers';    

const middleware = applyMiddleware(thunk, promise, logger);

const Store = createStore(rootReducer, compose(middleware, devTools({
  name: Platform.OS,
  hostname: 'localhost',
  port: 5678
}), ));

export default class App extends Component {
  render() {
    return (
      <Provider store={Store}>
        <View>
          <Header />
          <CryptoContainer />
        </View>
      </Provider>
    );
  }
}

but when I move the store logic to a new file ./src/Store.js,

import { Platform } from 'react-native';    
import { createStore, applyMiddleware, compose } from 'redux';
import devTools from 'remote-redux-devtools';
import promise from 'redux-promise';
import thunk from 'redux-thunk';
import logger from 'redux-logger';

import rootReducer from './reducers';

const middleware = applyMiddleware(thunk, promise, logger);

const Store = createStore(rootReducer,compose(middleware,devTools({
            name: Platform.OS,
            hostname: 'localhost',
            port: 5678
        }),
    )
);

export default Store;

and use it in App.js like

import React, { Component } from 'react';
import { View } from 'react-native';
import { Provider } from 'react-redux';

import { Header, CryptoContainer } from './src/components';
import { Store } from './src/Store';

export default class App extends Component {
  render() {
    return (
      <Provider store={Store}>
        <View>
          <Header />
          <CryptoContainer />
        </View>
      </Provider>
    );
  }
}

I get

TypeError: undefined is not an object (evaluating 'store.getState')

What's causing my build (expo start) to fail when I import Store.js?

like image 909
Thomas Avatar asked Dec 02 '22 10:12

Thomas


2 Answers

It seems the import statement is not right. It should be:

import Store from './src/Store';
like image 120
laurent Avatar answered Jan 19 '23 06:01

laurent


if you're importing a single named export
e.g where you've done export const MyComponent = () => {} you'd import it like
import { MyComponent } from "./MyComponent"

if you're importing a default export
e.g where you've done const MyComponent = () => {} export default MyComponent you'd import it like
import MyDefaultComponent from "./MyDefaultExport"

like image 28
Itunu Adekoya Avatar answered Jan 19 '23 07:01

Itunu Adekoya