React Redux错误TypeError:sourceSelector不是函数

问题描述 投票:1回答:1

我正在将状态切换为redux并遇到此错误

TypeError:sourceSelector不是函数

我已经粘贴了组件中的代码和我正在调度的动作,我认为它在mapDispatchToProps中有些东西但不确定

零件

componentDidMount() {
    const { dispatch } = this.props;
    dispatch(getTableData(this.props.apiUrl, this.state.limit, this.state.skip));
  }

const mapStateToProps = ({tableData}) => ({
  tableData,
});

function mapDispatchToProps (dispatch) {
  return {
    getTableData: (data) => dispatch(getTableData(data)),
  }
}

export default connect(
  mapStateToProps,
  mapDispatchToProps,
  { getTableData }
)(SearchableTable);

行动

import * as TYPES from './types';
import axios from 'axios';

export const getTableData = (url, limit, skip) => async dispatch => {
  try {
    dispatch({ type: TYPES.FETCH_TABLE_DATA_LOADING });
    const response = await axios.post(url, {
      limit: limit,
      skip: skip,
    });
    await dispatch({
      type: TYPES.FETCH_TABLE_DATA,
      payload: response.data,
    });
    dispatch({ type: TYPES.FETCH_TABLE_DATA_FINISHED });
  } catch (err) {
    dispatch({ type: TYPES.INSERT_ERROR, payload: err.response });
  }
};
reactjs redux react-redux
1个回答
1
投票

试试这个

import { bindActionCreators } from "redux";
import { connect } from "react-redux";
import { getTableData } from "actions";

componentDidMount() {
  // Make sure you use this.props.getTable data and not the raw imported
  // getTableData function
  this.props.getTableData(this.props.apiUrl, this.state.limit, this.state.skip));
}

const mapStateToProps = state => ({
  tableData: state.tableData
});

const mapDispatchToProps = dispatch =>
  bindActionCreators(
    {
      getTableData
    },
    dispatch
  );

return connect(
  mapStateToProps,
  mapDispatchToProps
)(SearchableTable);
© www.soinside.com 2019 - 2024. All rights reserved.