【发布时间】:2018-02-14 22:20:22
【问题描述】:
我的 redux 有问题。这是我第一次在 React 中使用它。我已经成功地使用它来记录和注册用户。但是,我在后端创建了一组对象,我正在使用 axios 获取这些对象。 Axios 记录数据,我的动作创建者也在有效负载中记录数据。但是,它不会更新我的新状态。我不知道我做错了什么,因为我尝试了与登录和注册状态完全相同的方式,但是这些只是布尔值。我已经用谷歌搜索并搜索了解决方案。我尝试映射新数组、Object.assign 和许多其他数组,但似乎无法正常工作。在状态下创建新数组有什么特殊方法吗?或者我可以分配它 action.payload 吗?感谢所有帮助
// store.js
import { applyMiddleware, createStore } from 'redux';
import logger from 'redux-logger';
import thunk from 'redux-thunk';
import reducer from './reducers/reducer';
const middleware = applyMiddleware(logger, thunk);
export default createStore(reducer, middleware);
// rootReducer.js
import { combineReducers } from 'redux';
import registerReducer from './registerReducer';
import loginReducer from './loginReducer';
import productsReducer from './products';
export default combineReducers({
registerReducer,
loginReducer,
productsReducer
});
// productsReducer // 我认为这里一定是错的
import { SHOW_PRODUCTS, SELECT_PRODUCT } from '../actions/products';
const initialState = {
productsList: []
};
const productsReducer = (state = initialState, action) => {
switch (action.type) {
case SHOW_PRODUCTS:
return {...state, productsList: action.payload}
}
return state;
}
export default productsReducer;
//actions.js
import { SHOW_PRODUCTS, SELECT_PRODUCT } from './constants';
export function showProducts(products) {
return {
type: SHOW_PRODUCTS,
payload: products
};
}
// 组件.js
import React, { Component } from 'react';
import axios from 'axios';
import { connect } from 'react-redux';
import ProductsList from './ProductsList';
import { showProducts } from '../actions/products';
class Home extends Component {
constructor(props) {
super(props);
}
componentWillMount() {
this.props.getProducts();
}
render() {
return(
<div>Home Page
<ProductsList />
</div>
)
}
}
const mapStateToProps = (state) => {
return {
productsList: state.productsReducer.productsList
};
}
const mapDispatchToProps = (dispatch) => {
return {
getProducts: () => {
axios.get('http://localhost:5000/product/list')
.then((res) => {
console.log(res.data);
dispatch(showProducts(res.data))
})
.catch(err => console.log(err))
}
}
}
export default connect(mapStateToProps, mapDispatchToProps)(Home);
我还在我的 redux 记录器中包含了一个图像链接。
https://i.stack.imgur.com/bTnYh.png
这里可能有一个非常小的、愚蠢的错误,因为我对 React 很陌生,对 Redux 完全陌生
【问题讨论】:
-
你能验证payload是否在productsReducer文件中有项目吗?
-
你有
console.log()productsReducer中的动作吗?
标签: javascript arrays reactjs redux state