类型错误:未定义不是对象(评估“store.getState”)

Tho*_*mas 3 javascript ecmascript-6 react-native redux

我正在关注Let's Build: Cryptocurrency Native Mobile App With React Native + Redux教程。

当我在 中创建我的商店时App.js,该应用程序运行良好

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>
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

但是当我将存储逻辑移动到一个新文件时./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;
Run Code Online (Sandbox Code Playgroud)

并用它在App.js

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>
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

我得到

类型错误:未定义不是对象(评估“store.getState”)

expo start导入时是什么导致我的构建 ( ) 失败Store.js

lau*_*ent 9

看来导入语句不对。它应该是:

import Store from './src/Store';
Run Code Online (Sandbox Code Playgroud)


Itu*_*oya 7

如果你要导入一个single named export
例如你已经完成的地方,export const MyComponent = () => {}你会像这样导入它
import { MyComponent } from "./MyComponent"

如果你要导入一个default export
例如你已经完成的地方,const MyComponent = () => {} export default MyComponent你会像这样导入它
import MyDefaultComponent from "./MyDefaultExport"

  • 你能进一步解释一下吗?为什么要这样做,这些点背后隐藏着什么? (3认同)