我一直在尝试将Redux集成到项目中。
我遵循了用法示例,但收到错误store.getState is not a function.
所以我知道其他人也提出了类似的问题,但情况有所不同。
环境
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;
谢谢您的帮助。
答案 0 :(得分:0)
我忘了在appRedux上使用reducer:/
const appRedux = () => (
<Provider store={createStoreWithMiddleware}>
<App />
</Provider>
)
成为
const appRedux = () => (
<Provider store={createStoreWithMiddleware(reducers)}>
<App />
</Provider>
)