Redux不更新Component的道具

时间:2017-11-01 17:08:34

标签: javascript reactjs redux react-redux

我已经在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;

1 个答案:

答案 0 :(得分:2)

这不是redux的工作方式。

为了更新Redux商店的任何部分,必须 调度操作才能让Redux“知道”该商店更改并更新任何相关组件。

你的状态对象必须是不可变的