Redux / React-Redux не возвращает состояние через mapStateToProps компонентам, несмотря на то, что редуктор правильно запускает и собирает правильное состояние.Я следовал коду Redux, и состояние, по-видимому, течет через него, но плоское состояние не возвращается компоненту React, несмотря на то, что он помещен в функцию connect.
Ниже приведена выдержка из кода:
index.js (Мое приложение)
import { Provider, connect } from 'react-redux';
import { store } from './store/index';
import { fetchData, ghostFlag, dropDowned, addAttribute, setSelectedItem } from './actions/docActions';
...some code...
render(){
return(
<span className = "app-container" id = {this.props.sidebar_shown}>
<div className="sidebar" >
<div className = "add_content_1">
<h2 className="page-add-subheader">Content</h2>
<TextAddContainer BlogSnapshot = {this.props.getSnapshot} CurrentEditPageHandle = {this.props.CurrentEditPageHandle} />
<SidebarImageContainer CurrentEditPageHandle = {this.props.CurrentEditPageHandle} />
</div>
const mapStateToProps = (state, ownProps) => {
console.log("The state is:"+state);
return state;
}
const mapDispatchToProps = dispatch => {
return {
fetchData: () => dispatch(fetchData (typeVar, snapshot)),
updateHandle: () => dispatch(updateHandle(handle)),
}
}
ReactDOM.render(
<Provider store = {store}>
<App />
</Provider>,
document.getElementById('root')
);
export default connect(mapStateToProps, mapDispatchToProps)(App);
Магазин:
import React from 'react';
import {applyMiddleware, createStore, combineReducers } from 'redux';
import {rootReducer} from '../reducers/reducers';
export const store = createStore(
combineReducers({
state: rootReducer
}),
window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__()
);
import undoable, { distinctState } from 'redux-undo';
Редукторы (подтверждено, работает в devtools,но возвращенное состояние НЕ доходит до моих компонентов!):
export const rootReducer = ( state , action) => {
if(typeof(state) === "undefined"){
state = 0;
}
switch (action.type){
case 'SELECTED':
return Object.assign({}, state, {
})
case 'DROPDOWN':
return Object.assign({}, state, {
})
case 'PAGESNAP':
if(action.payload){
return Object.assign({}, state, {
PagesSnapshot : action.payload
})
}else { return state}
case 'BLOGSNAP':
if(action.payload){
return Object.assign({}, state, {
BlogSnapshot : action.payload
})
}else { return state}
case 'IMAGESNAP':
if(action.payload){
return Object.assign({}, state, {
ImageSnapshot : action.payload
})
}else { return state}
case 'CURRENTEDITPAGE':
return Object.assign( {}, state, {
CurrentEditPageHandle : action.payload
})
default:
return state
}
}
Как вы можете видеть, я отобразил функцию соединения соответственно.В чем дело?