如何在createAction的prepareAction函数内访问商店实例?

时间:2020-08-26 02:47:31

标签: reactjs redux react-redux redux-thunk

我们有两个API,可根据用户的角色来获取数据。

user信息存储在redux存储中。而且我不想将用户as和参数传递给服务函数,但需要从商店访问user信息。

我尝试在服务中将store导入为import store from '../store;,但结果为Dependency cycle

如何在不向商店或用户传递参数和依赖性周期的情况下访问服务内部商店的状态?

// actions/product.js

import { createAction } from 'redux-actions';

import * as productService from 'services/products';

const FETCH_PRODUCTS = 'FETCH_PRODUCTS';
const FETCH_PRODUCTS_PENDING = 'FETCH_PRODUCTS_PENDING';
const FETCH_PRODUCTS_REJECTED = 'FETCH_PRODUCTS_REJECTED';
const FETCH_PRODUCTS_FULFILLED = 'FETCH_PRODUCTS_FULFILLED';

const fetchProducts = createAction(FETCH_PRODUCTS, productService.fetchProducts)
// services/products.js

export function fetchPractices() {
  let data = [];
  if (user.role == 'admin') {
    data = await axios(fetch from API 1)
  } else {
    data = await axios(fetch from API 2)
  }

  return data;
}
// component

import { fetchProducts } from 'actions/products';

class Products extends React.Component {
  componentDidMount() {
    const { fetchProducts } = this.props;
    await fetchProducts();
  }
}

const mapStateToProps = (state) => ({
  products: state.products.products
})

const mapDispatchToProps = {
  fetchPractices,
}

export default connect(mapStateToProps, mapDispatchToProps)(Products);

0 个答案:

没有答案