[英]TypeError: store.getState is not a function. (In 'store.getState()', 'store.getState' is undefined
[英]TypeError: undefined is not an object (evaluating 'store.getState')
我正在關注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>
);
}
}
但是當我將商店邏輯移動到新文件./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;
並在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>
);
}
}
我得到
TypeError: undefined is not an object (evaluating 'store.getState')
當我導入Store.js
時,是什么導致我的構建 ( expo start
) 失敗?
導入語句似乎不正確。 它應該是:
import Store from './src/Store';
如果您要導入single named export
例如,你在哪里完成export const MyComponent = () => {}
你會導入它import { MyComponent } from "./MyComponent"
如果您要導入default export
例如,你在哪里完成了const MyComponent = () => {} export default MyComponent
你會導入它import MyDefaultComponent from "./MyDefaultExport"
我收到此錯誤是因為我從我的主 App 文件中導出了錯誤的組件。
我正在導出這個:
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!
最后一行應該是:
export default Wrapped; // right!
Itunu Adekoya 的回答表明您可以決定導出/導入的方式,在這種情況下是關於個人偏好的,因為沒有性能差異。
如果你從一個文件中導出了很多,並且可能有些是不相關的或者不會全部一起使用,最好將它們單獨導出為常量,然后在其他文件中只導入你需要的內容通過 import { } 格式,這將確保只包含相關的 imprts
在我的例子中,它的外殼和命名的導入問題。 導入為
import store from './Redux/Store'
它應該是
import {Store} from './Redux/Store'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.