【发布时间】:2019-01-15 19:19:48
【问题描述】:
嘿,我的 badgeNumber 经常以未定义的形式返回,我真的不明白为什么。感谢您的帮助。
我的减速机:
import {OPEN_DROPDOWN, ADD_TASK, REMOVE_TASK, CLOSE_DROPDOWN} from '../types/MenuTypes';
const initialState = {
badgeNumber: 6,
drop: false,
tasks: []
};
export function reducerMenuEntry(startMenuState = initialState, action) {
switch (action.type) {
case OPEN_DROPDOWN:
return Object.assign({}, startMenuState, {
...startMenuState,
drop: true
});
case CLOSE_DROPDOWN:
return Object.assign({}, startMenuState, {
...startMenuState,
drop: false
});
case REMOVE_TASK:
case ADD_TASK:
return Object.assign({}, startMenuState, {
...startMenuState,
badgeNumber: action.badgeNumber,
tasks: action.tasks
});
default:
return initialState;
}
}
以及我尝试显示数据的组件:
import { connect } from 'react-redux';
class ToolsBar extends Component {
render() {
const {badgeNumber} = this.props;
alert(badgeNumber);
return (
<Toolbar {...this.props.getActionsProps({})}>
<ToolbarButton>
<Badge badgeContent={badgeNumber} />
</ToolbarButton>
</Toolbar>
);
};
};
const mapStateToProps = state => {
return {
drop: state.drop,
badgeNumber: state.badgeNumber
};
};
export default connect(mapStateToProps)(ToolsBar);
商店:
import { createStore, applyMiddleware } from 'redux';
import RootReducer from './reducers/RootReducer';
import thunk from 'redux-thunk';
export default () => {
return createStore(RootReducer, applyMiddleware(thunk));
};
操作,但目前尚未完全实施。我想在通过操作修改它们之前显示静态值:
import { OPEN_DROPDOWN, ADD_TASK, REMOVE_TASK, CLOSE_DROPDOWN} from "../types/MenuTypes";
export const open = () => {
return { type: OPEN_DROPDOWN }
};
export const close = () => {
return { type: CLOSE_DROPDOWN }
};
export function addTask(tasks, badgeNum){
badgeNum++;
return { type:ADD_TASK, tasks, badgeNum}
};
export function removeTask (tasks, badgeNum){
badgeNum--;
return { type: REMOVE_TASK, tasks, badgeNum}
};
组合减速机:
import {combineReducers} from 'redux';
import {reducerUpdatePageEntry} from './UpdatePageReducer';
import {reducerSearchPageEntry} from './SearchPageReducer';
import {reducerSharedEntry} from './SharedReducer';
import {reducerUploadPageEntry} from './UploadPageReducer';
import {reducerMenuEntry} from './MenuReducer';
export default combineReducers({
updateStates: reducerUpdatePageEntry,
displaySearchStates: reducerSearchPageEntry,
sharedStates: reducerSharedEntry,
uploadStates: reducerUploadPageEntry,
menuStates: reducerMenuEntry
});
【问题讨论】:
-
该道具是通过异步操作从某个地方传来的吗?
-
对不起我对Redux不好我以为他们是通过商店传递的
-
好的,但是这个
badgeNumber值是从哪里来的?它在您的代码中是静态的还是来自 API?最好添加您的动作创建者代码。你有 thunk 中间件,所以可能有一个异步作业。 -
目前是静态的,我将更新评论,以便我也可以显示操作。
-
另外,请您的减速机。因为我们现在看不到你的
state是什么样子的。
标签: reactjs react-redux undefined redux-thunk reducers