【发布时间】:2019-12-03 17:14:06
【问题描述】:
我是 React/Redux 的新手。
我正在制作简单的购物车。 现在我正在尝试显示本地 json 文件中的数据。 数据的状态如下:{items: data here }。 当我在顶级 reducer 文件上编写 reducer 时,我可以映射这些项目。 但是,如果我使用 combineReducers 它会给我错误提示“this.props.items is undefined: return this.props.items.slice(0, 20).map(item =>”。
如何访问和映射项目?
减速机 #1 cartReducer.js
import data from "../data.json";
const INITIAL_STATE = {
items: data,
addedItem: [],
total: 0
}
const cartReducer = (state = INITIAL_STATE, action) => {
return state;
}
export default cartReducer;
减速机 #2
import { combineReducers } from 'redux';
import items from './cartReducer';
export default combineReducers({
items
})
显示项目列表的组件
import React from 'react';
import { connect } from 'react-redux';
import { addToCart } from '../actions';
class ItemList extends React.Component {
renderList() {
return this.props.items.slice(0, 20).map(item => {
return (
<div className="card" key={item.id}>
<span className="card-title">{item.name}</span>
<p>{item.content}</p>
<p><b>Price: {item.price}$</b></p>
</div>
)
})
}
render() {
return (
<div>
{this.renderList()}
</div>
)
}
}
const mapStateToProps = state => {
return {
items: state.items
}
}
const mapDispatchToProps = dispatch => {
return {
addToCart: (id) => {
dispatch(addToCart(id))
}
}
}
export default connect(mapStateToProps, mapDispatchToProps)(ItemList);
JSON 数据
[
{
"id": 201,
"name": "Nulla",
"price": 207,
"subCategoryId": 101,
"categoryId": 1,
"rate": 2.44,
"content": "Culpa sed tenetur incidunt quia veniam sed mollitia exercitationem. Laboriosam reprehenderit laborum pariatur ea rem qui inventore. In asperiores dignissimos temporibus et. Beatae consequatur corrupti nam praesentium.",
"review": 78,
"typeVariant": "D",
"colorVariant": "5",
"imageUrl": "https://placeholdit.imgix.net/~text?txtsize=55&txt=137x945&w=137&h=945"
},{
"id": 202,
"name": "Corporis",
"price": 271,
"subCategoryId": 101,
"categoryId": 1,
"rate": 2.18,
"content": "Nam incidunt blanditiis odio inventore. Nobis voluptatum quibusdam laboriosam a numquam. Delectus sequi ipsa possimus ratione repellendus quibusdam. Molestiae fuga laudantium natus dolorem.",
"review": 67,
"typeVariant": "A",
"colorVariant": "4",
"imageUrl": "https://dummyimage.com/931x785"
}
]
【问题讨论】:
-
尝试
debugger或console.log(this.props)作为渲染方法的第一行。似乎您的组件没有收到预期的道具。 -
当我执行
console.log(this.props)时,它给了我一个包含每个状态的对象,该对象无法映射。为了使用地图,状态似乎必须看起来像return { items: state.items.items }。这会给我一个数组。
标签: reactjs redux react-redux