javascript - Redux- mapStateToProps 不工作

标签 javascript reactjs redux

我有一个 react 组件,它在 componentWillMount 中进行 AJAX 调用,并支持接收到的数据以响应 redux 存储。这是代码

componentWillMount() {
  var self = this;
  var xmlhttp = new XMLHttpRequest();
  xmlhttp.onreadystatechange = function() {
    if (this.readyState === 4 && this.status === 200) {
      console.log(this.responseText);
      var json = JSON.parse(this.responseText);
      var data = {
        json
      };
      self.props.dispatch({
        type: "ADD_Exams",
        data
      });
    }
  };
  xmlhttp.open("GET", "http://127.0.0.1:8000/getExams/", true);
  xmlhttp.send();
}

在 reducer 中,我将操作中接收到的数据分配给在 reducer 状态中定义的数组。

const initialState = {
  exams:[]    
}

const examreducer = (state = initialState, action) => {
  switch (action.type) {
    case "ADD_Exams":
      return {
        ...state,
        exams: [...state.exams, action.data.json]
      };
    default:
      return state;
  }
};

但是当我使用 mapStateToProps 读取 exams 变量时,我得到了 undefined。

const mapStateToProps = (state) => {
    return {
        exams: state.exams
    }
}

export default connect(mapStateToProps)(Exam); 

我正在创建这样的商店

import { Provider } from "react-redux";
const store = createStore(loginReducer, examReducer);
ReactDOM.render(
  <Provider store={store}>
    <Exam />
  </Provider>,
  document.getElementById("root")
);

registerServiceWorker();

console.log(this.props.exams) 打印未定义。这里有什么问题?

最佳答案

我遇到了同样的问题。我的错误是因为我错误地导出/导入了组件。

导出:

export class MyComponent extends React.Component
...
export default connect(mapStateToProps, mapDispatchToProps)(MyComponent);

导入:

import { MyComponent } from './MyComponent';

为了解决我删除了类上的导出并使用默认值:

import MyComponent from './MyComponent';

关于javascript - Redux- mapStateToProps 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50532674/

相关文章:

reactjs - 如何在功能组件中的 React props 中使用泛型?

javascript - React createElement 子级语法

reactjs - 如何根据reactjs中显示的内容拉伸(stretch)卡片?

reactjs - 我什么时候应该使用 Redux Sagas?

Redux - createSlice 内的标准化嵌套数据组织

javascript - 按钮宽度以填充窗口宽度

javascript - React-native 和 Firebase : Wait for Firebase data

php - 使用 javascript 和 php 验证 URL

javascript - 如何使用double for 语句创建一个循环来排序Array 来处理有月和日的Array?

javascript - 使用react和redux登录api请求