首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TypeError:未定义不是对象(计算'store.getState')

TypeError:未定义不是对象(计算'store.getState')
EN

Stack Overflow用户
提问于 2018-12-12 07:23:36
回答 5查看 16K关注 0票数 4

我正在学习让我们构建:带有React本机+ Redux的加密本地移动应用程序教程。

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

代码语言:javascript
复制
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>
    );
  }
}

但是当我将存储逻辑移动到一个新文件./src/Store.js时,

代码语言:javascript
复制
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;

并在App.js中使用它,如

代码语言:javascript
复制
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>
    );
  }
}

我得到了

TypeError:未定义不是对象(计算'store.getState')

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

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2018-12-12 08:20:47

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

代码语言:javascript
复制
import Store from './src/Store';
票数 15
EN

Stack Overflow用户

发布于 2019-07-01 13:56:41

如果您要导入一个single named export

例如,在您已经完成export const MyComponent = () => {}的地方,您将导入它就像

import { MyComponent } from "./MyComponent"

如果您要导入一个default export

例如,在您已经完成const MyComponent = () => {} export default MyComponent的地方,您将导入它就像

import MyDefaultComponent from "./MyDefaultExport"

票数 6
EN

Stack Overflow用户

发布于 2019-10-24 11:57:47

我得到这个错误是因为我从我的主App文件导出了错误的组件。

我是在出口这个:

代码语言:javascript
复制
import React from 'react'
import { Provider } from 'react-redux'
import { createAppContainer } from 'react-navigation'
import Navigator from './src/components/Navigator'
import { store } from './src/store'

const App = createAppContainer(Navigator);

const Wrapped = props => (
  <Provider store={store}>
    <App />
  </Provider>
)

export default Provider; // wrong!

最后一行应是:

代码语言:javascript
复制
export default Wrapped; // right!
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53737943

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档