我已经在Stack Overflow中尝试了所有相关问题,但仍未找到解决此问题的方法。
我有一个名为me
的reducer,我正在尝试更新一个名为folders
的对象数组,每当我更新组件未更新的me
reducer时。
以下是我在更新组件中的reducer的方法:
class ComponentA extends Component {
...
updateUploadedFiles(file) {
console.log(this.props.store);
const newFolders = this.props.me.folders.map(
folder =>
folder._id === file.parent._id
? {
...folder,
files: [...folder.files, file.file]
}
: folder
);
this.props.updateMe({
...this.props.me,
folders: newFolders
});
}
...
}
function mapStateToProps(state) {
return {
me: state.me,
path: state.path,
filesToUpload: state.uploads
};
}
function mapDispatchToProps(dispatch) {
return bindActionCreators(
{
updatePath,
updateMe,
updateUploads
},
dispatch
);
}
export default connect(mapStateToProps, mapDispatchToProps, null, {
pure: false
})(Upload);
这是我的updateMe
操作代码:
export const updateMe = state => ({
type: "UPDATED_ME",
payload: state
});
这是me
reducer的代码:
export default function(state = "NOT_AUTHENTICATED", action) {
switch (action.type) {
case "UPDATED_ME":
return action.payload;
default:
return state;
}
}
这也是我如何组合减速器:
import me from "./me";
...
import { combineReducers } from "redux";
const reducers = combineReducers({
me,
...
});
export default reducers;
答案 0 :(得分:2)
这不是redux的工作方式。
为了更新Redux商店的任何部分,必须 调度操作才能让Redux“知道”该商店更改并更新任何相关组件。
你的状态对象必须是不可变的。