reactjs - 在反应中的功能组件之间传递方法
问题描述
我有 2 个组件,如下所示。当我尝试将方法(增量)从组件“CartList”传递给“CartItem”时,它说增量未定义。当我单击按钮时发生错误(在下面的代码中指出)。我该如何解决这个错误?
家长
import React, {Component} from 'react';
import CartItem from './CartItem';
import {connect} from "react-redux";
import Axios from "axios";
const mapStateToProps = ({ session}) => ({
session
});
const CartList = ({session, ...props}) => {
const cart = props.cart;
const increment = (productId) => {
const item = {
userId : session.userId,
productId: productId
};
Axios.post('http://localhost:5000/api/cart/increment', item)
.then(res=>{
if(res.status === 200){
console.log('Incremented');
}
})
};
return (
<div className="container-fluid">
{cart.map(item => {
return <CartItem key = {item.id} item={item} increment={increment}/>
})}
</div>
);
};
export default connect(
mapStateToProps
)(CartList);
孩子
import React from 'react';
import {connect} from "react-redux";
const mapStateToProps = ({ session}) => ({
session
});
const CartItem = ({session ,...props}) => {
const {id,name, price, quantity} = props.item;
const {increment} = props.increment;
return (
<div className="row my-2 text-capitalize text-center">
<div className="col-10 mx-auto col-lg-2">
<img style={{width: '5rem', height: '5rem'}} className="img-fluid" alt="product "/>
</div>
<div className="col-10 mx-auto col-lg-2">
<span className="d-lg-none">Product: </span>{name}
</div>
<div className="col-10 mx-auto col-lg-2">
<span className="d-lg-none">Price: </span>{price}
</div>
<div className="col-10 mx-auto col-lg-2 my-2 my-lg-0">
<div className="d-flex justify-content-center">
<div>
<span className="btn btn-black mx-1" >-</span>
<span className="btn btn-black mx-1">{quantity}</span>
<span className="btn btn-black mx-1" onClick={() => increment(id)}>+</span> //<- Error occurs if I click on this button
</div>
</div>
</div>
<div className="col-10 mx-auto col-lg-2">
<div className="cart-icon" >
<i className="fas fa-trash"/>
</div>
</div>
<div className="col-10 mx-auto col-lg-2">
<srong>Total: ${50}</srong>
</div>
</div>
);
};
export default connect(
mapStateToProps
)(CartItem);
我尝试直接在子组件中实现该功能,它工作正常。此方法负责增加数据库(MongoDB)中产品的数量。但不显示更新的值。因此,我在父组件中实现了“增量”功能
解决方案
问题是这一行:
const {increment} = props.increment;
那是试图访问props.increment.increment
,这是未定义的。你要么打算做
const increment = props.increment;
或者
const {increment} = props;
推荐阅读
- javascript - 如何在 jquery 上只选择父级?
- sql-workbench-j - SQL Workbench/J:运行 SQL 文件
- pandas - 使用循环方法填充空 Panda 数据框
- flutter - 从 CupertinoTabScaffold 导航出去
- informatica - 如何在 IICS 中加载和使用列名/标题 > 65 字符?
- javascript - jQuery表刷新但发生重复
- ffmpeg - 将 h264 字节流重新打包到 Matroska 输出
- powerbi - 桥接表 - DAX 还是 M?
- c# - 是否可以使用 roslyn 将引用的程序集包含到 exe 文件中?
- php - 需要使用 PHP CURL 通过分页从 asp.net 站点抓取数据