【发布时间】:2021-05-19 15:41:21
【问题描述】:
我是 Redux 的新手,在商店更改后重新渲染时遇到问题。我在 SO 上发现了很多类似的问题,但仍然无法解决我的问题。
我有一个包含多个任务的月度任务(事件)日历。 Calendar 是主要组件,在更深层次上还有多个 TaskItem 组件。在第一次渲染时,日历和任务被渲染得很好(在这种情况下没有员工姓名)。在Calendar 组件中,我使用 useEffect 挂钩触发加载员工。我可以在控制台上看到网络请求。除此之外,控制台会登录操作,并且在 reducer 中还会显示员工列表。 Redux devtool 还显示加载的员工。 TaskItem 上的 mapStateToProps 仍然显示完全为空的状态。
我做错了什么?
这是我的相关代码:
日历:
const Calendar = ({startDay, tasks, loadEmployeesAction}) => {
useEffect(()=>{
loadEmployeesAction();
},[]);
...
}
export default connect(null, {loadEmployeesAction})(Calendar);
任务项:
const TaskItem = ({task, onTextEdit, onTaskView, saveTask, employees }) => {
...
}
const mapStateToProps = (state) => {
console.log('Actual state is: ', state);
return {
employees: state.employees
}
}
export default connect(mapStateToProps)(TaskItem);
减速机:
export const employeeReducer = (state = [], action) => {
switch (action.type) {
case actionType.EMPLOYEES_LOADED:
console.log('Reducer - Employees loaded:', action );
return action.payload.employees;
default :
return state;
}
}
动作:
const employeesLoaded = (employees) => {
return {type: actionType.EMPLOYEES_LOADED, payload: {
employees
}
}
}
export const loadEmployeesAction = () => {
return (dispatch) => {
return employeeApi.getAllEmployees().then(emps => {
console.log('Action - Employees loaded: ', emps);
dispatch(employeesLoaded(emps));
})
}
}
根减速器:
export const rootReduxReducer = combineReducers({
employees: employeeReducer
});
【问题讨论】:
标签: reactjs redux react-redux