Я до сих пор не знаю, как получить данные из своего действия.

Вот действие:

import myConstant from './constatnts'
...
export const fetchData = {
  isLoading,
  isSuccess,
  ...
};

const isLoading = () => dispatch => {
  dispatch({
    type: myConstant.FETCH_LOADING,
    payload: LoadingApi()
  });
}

А также пробовал использовать ES5:

function isSuccess() {
  return function(dispatch){
    dispatch({
      type: myConstant.FETCH_DATA
      payload: fetchDataApi()
    });
  };
}

И у меня есть ошибка при получении данных в Redux в компоненте:

import {fetchData} from './myData'

componentWillMount() {
  fetchData.isSuccess; // or fetchData.isLoading
}

У меня следующая ошибка:

Ожидал присвоения или вызова функции, а вместо этого увидел выражение no-unused-expressions

Как я могу это исправить?

0
31113 1 Дек 2018 в 19:41

1 ответ

Лучший ответ

Вам нужно вызвать свое действие, используя диспетчерскую клавиатуру. Если вы хотите использовать ключевое слово dispatch из компонента реакции, вам нужно обернуть свой компонент функцией connect() из пакета react-redux.

Затем вам нужно будет определить как минимум функцию mapStateToProps для получения данных (EDIT: вам не нужно включать mapStateToProps :) включайте ее только тогда, когда вы хотите вернуть некоторые данные в свой компонент), которые вы сохранили в store вашим редуктором из вашего хранилища redux в компонент в качестве реквизита.

Итак, ваш код должен выглядеть следующим образом:

import {fetchData} from './myData'
import {connect} from "react-redux";

class YourComp extends Component {
  ...
  componentWillMount() {
    this.props.dispatch(fetchData.isSuccess());
  }
  ...
}

// this will push data from the store to your props
const mapStateToProps = state => ({
  yourData: state.reducer.data
});

// besides other things, this line will push dispatch function callback into your component's props
export default connect(mapStateToProps)(YourComp);
1
sbqq 1 Дек 2018 в 16:55