TypeError:store.getState不是函数。 (在“ store.getState()”中,“ store.getState”未定义

时间:2018-10-11 13:24:04

标签: javascript react-native react-redux

我一直在尝试将Redux集成到项目中。

我遵循了用法示例,但收到错误store.getState is not a function.

所以我知道其他人也提出了类似的问题,但情况有所不同。

performance

环境

OS: macOS Mojave 10.14
Node: 8.11.3
Yarn: 1.10.1
npm: 6.4.1
Watchman: 4.9.0
Xcode: Xcode 10.1
  

react-native-cli:2.0.1 react-native:0.57.2

Index.js

import React, {Component} from 'react';
import { AppRegistry } from 'react-native';

import { Provider } from 'react-redux';
import { createStore, applyMiddleware } from 'redux';
import promiseMiddleware from 'redux-promise';

import reducers from './src/Stores/reducers';

import App from './App';
import { name as appName } from './app.json';

const createStoreWithMiddleware = applyMiddleware(promiseMiddleware)(createStore)

const appRedux = () => (
    <Provider store={createStoreWithMiddleware}>
        <App />
    </Provider>
)

AppRegistry.registerComponent(appName, () => appRedux);

App.js

export default class App extends Component {
  render() {
    return (
      <View style={styles.container}>
     <Cards />
     </View>
    );
  }
}

Card_reducer.js

export default function(state={}, action){
    switch(action.type){
        case 'GET_ARTICLES':
        return{...state, cards:action.payload}
        default:
        return state;
    }
}

card> index.js

import React, {Component} from 'react';
import {Platform, StyleSheet, Text, View} from 'react-native';
import { connect } from 'react-redux';
import { getCards } from '../Stores/actions'
import { bindActionCreators } from 'redux';

class Cards extends Component{

componentDidMount(){
    this.props.getCards()
}

    render(){
        return(
            <Text>Cartes</Text>
        )
    }
}

function mapStateToProps(state){
    console.log(state);
    return{
        cards: state.cards
    }
}

function mapDispatchToProps(dispatch){
    return bindActionCreators({getCards}, dispatch);
}

export default connect(mapStateToProps,mapDispatchToProps)(Cards);

Reducer> Index.js

import { combineReducers } from 'redux';

import cards from './card_reducer'

const rootReducer = combineReducers({
    cards
});

export default rootReducer;

谢谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我忘了在appRedux上使用reducer:/

const appRedux = () => (
    <Provider store={createStoreWithMiddleware}>
        <App />
    </Provider>
)

成为

const appRedux = () => (
    <Provider store={createStoreWithMiddleware(reducers)}>
        <App />
    </Provider>
)