React Redux Error TypeError: sourceSelector не является функцией - PullRequest
2 голосов
/ 28 марта 2019

Я переключаю свое состояние на избыточный и столкнулся с этой ошибкой

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 });
  }
};

1 Ответ

1 голос
/ 28 марта 2019

Попробуйте это

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);
...