【发布时间】:2023-03-28 17:33:01
【问题描述】:
我尝试使用 React + Redux 实现购物车。我在初始数据方面表现出色,当我调用操作时它不起作用 我的减速机
const initalState = {
loading: false,
currentEmployeeId: 1,
carts: {
'1': {
employee: {
firstName: 'Ha',
lastName: 'Nguyen',
id: 1,
},
services: {
'1' :
{id: 1, name: "Fill In Acrylic" },
'2':
{
id: 2, name: "Fill In Gel Color" }
}
},
},
customer: {
firstName: "Thuc",
lastName: 'Vo',
id: 2,
},
}
export default function cart(state = initalState, action) {
switch (action.type) {
case RECEIVE_DATA:
return Object.assign({}, state, {
loading: false,
})
case ADD_SERVICE:
{
const { currentEmployeeId} = state;
let service = {
id: action.service.id,
name: action.service.name,
};
return {
...state,
...state.carts[currentEmployeeId].services[service.id] = service,
loading: false,
}
}
default:
return state;
}
}
行动:
export function addService(service){
return{
type: ADD_SERVICE,
service
}
}
并调用调度
dispatch(addService({id: 76, name: "4 Designs"}))
服务已添加到服务属性,UI 不会重新渲染
function mapStateToProps(state) {
return {
carts: state.cart.carts
};
}
购物车列表:
员工:员工姓名 1
1.服务名称1
2. 服务名称 2
3.服务名称3
员工:员工姓名 2
4. 服务名称 4
5:服务名称5
更新:
class CartComponent extends Component {
render() {
const { carts } = this.props;
return (
<div className="div-table-content">
<table className="table table-condensed table-hover table-striped table-scroll table-customer-referral">
<tbody>
{
<Carts carts={carts} />
}
</tbody>
</table>
</div>
);
}
}
export default CartComponent;
class CartContainer extends Component {
render() {
return (
<CartComponent carts={this.props.carts} />
);
}
}
function mapStateToProps(state) {
return {
carts: state.cart.carts
};
}
export default connect(
mapStateToProps,
null
)(CartContainer);
【问题讨论】:
-
您能否提供您的组件的代码,以便我们知道发生了什么?如果 ui 没有重新渲染,可能你没有使用 mapStateToProps 函数到你的组件
-
函数 mapStateToProps(state) { return { carts: state.cart.carts }; } 导出默认连接(mapStateToProps,null)(CartContainer);
-
能否也添加 CartContainer 组件代码?
-
CartContainer 连接到 redux 存储
标签: javascript reactjs redux react-redux