我们有两个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);