gpt4 book ai didi

javascript - 如何使项目列表在删除项目时自动更新渲染列表?

转载 作者:行者123 更新时间:2023-12-03 03:42:51 25 4
gpt4 key购买 nike

我正在使用 Redux 构建网络购物车。我的购物车正在运行,除非我删除购物车上的商品时,页面需要刷新或更改才能呈现更改。当项目被删除时如何显示更改?这是我的购物车组件:

import React, { Component } from 'react';
import {addCart} from './Shop';
import { removeCart } from '../../actions';
import { connect } from 'react-redux';

export class Cart extends Component {
constructor(props) {
super(props);
this.state = {items: this.props.cart,cart: [],total: 0};
}

handleClick(item) {
this.props.onCartRemove(item);
}

...
render() {
return(
<div className= "Webcart" id="Webcart">
<div id='WebcartWrapper'>
<ul id='webCartList'>
{this.state.items.map((item, index) => {
return <li className='cartItems' key={'cartItems_'+index}>
<h4>{item.item}</h4>
<p>Size: {item.size}</p>
<p>Price: {item.price}</p>
<button onClick={() => this.handleClick(item)}>Remove</button>
</li>
})}
</ul>
<div>Total: ${this.countTotal()}</div>
</div>
</div>
);
}
}

const mapDispatchToProps = (dispatch) => {
return {
onCartAdd: (cart) => {
dispatch(addCart(cart));
},
onCartRemove: (item) => {
dispatch(removeCart(item));
},
}
}

function mapStateToProps(state) {
return { cart: state.cart };
}

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

这些是我的操作:

export const ADD_CART = 'ADD_CART';
export const REMOVE_CART = 'REMOVE_CART';

export function addCart(item){
return {
type: ADD_CART,
payload: item
}
};

export function removeCart(item){
return{
type:REMOVE_CART,
payload: item
}
};

这些是我的 reducer :

import {ADD_CART} from './actions';
import {REMOVE_CART} from './actions';
import { REHYDRATE } from 'redux-persist/constants';

export default Reducer;

var initialState = {
cart:{},
data: [],
url: "/api/comments",
pollInterval: 2000
};

function Reducer(state = initialState, action){
switch(action.type){
case REHYDRATE:
if (action.payload && action.payload.cart) {
return { ...state, ...action.payload.cart };
}
return state;

case ADD_CART:
return {
...state,
cart: [...state.cart, action.payload]
}

case REMOVE_CART:
return {
...state,
cart: state.cart.filter((item) => action.payload !== item)
}



default:
return state;
};
}

如果需要更多我的代码,请询问。如何让网络购物车列表在删除商品时自动更新?

最佳答案

您需要更新您的状态以使其再次渲染..

购物车组件中,只需添加功能

...
componentWillReceiveProps(nextprops)
{
this.setState({
items: nextprops.cart
})
}
...

*) componentWillReceiveProps 会在handleClick中的execdispatch()之后调用,将reducers中的新闻数据返回到cart组件的this.props中。

在您的代码中例如:

export class Cart extends Component {
constructor(props) {
...
}

componentWillReceiveProps(nextprops)
{
this.setState({
items: nextprops.cart
})
}

handleClick(item) {
...
}

render() {
...
}
}

关于javascript - 如何使项目列表在删除项目时自动更新渲染列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45538381/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com