Reactjs 我应该如何修复TypeError“;财产';道具';“未定义”的定义;?

Reactjs 我应该如何修复TypeError“;财产';道具';“未定义”的定义;?,reactjs,redux,react-redux,Reactjs,Redux,React Redux,当我点击[添加到购物车]按钮时,我得到一个错误: . 我该如何解决这个问题? 这是我的,下面是一个与问题相关的摘要: class ProductsList extends Component { .... renderProductsList() { function mapProductCards(elem) { return ( <Card className="m-1" style={{width: '18rem'}} key={elem.

当我点击[添加到购物车]按钮时,我得到一个错误: . 我该如何解决这个问题?
这是我的,下面是一个与问题相关的摘要:

class ProductsList extends Component {
  ....
  renderProductsList() {
    function mapProductCards(elem) {
      return (
        <Card className="m-1" style={{width: '18rem'}} key={elem.id}>
            .... 
            <CardText>isAvailable</CardText>
            <Button onClick={() => this.props.addItemToCart(elem.id)}>Add to Cart</Button>
          </CardBlock>
        </Card>
      )
    }
....
this.props.products ....
        .map(mapProductCards)
....
const mapDispatchToProps = (dispatch) => ({
....
  addItemToCart(value) {
    dispatch(addToCart(value));
  } 
....
});

export default connect(mapStateToProps, mapDispatchToProps)(ProductsList);
....
类产品列表扩展组件{
....
renderProductsList(){
功能映射产品卡(elem){
返回(
.... 
可用
this.props.addItemToCart(elem.id)}>添加到购物车
)
}
....
这是道具产品。。。。
.map(mapProductCards)
....
const mapDispatchToProps=(调度)=>({
....
addItemToCart(值){
调度(addToCart(价值));
} 
....
});
导出默认连接(mapStateToProps、mapDispatchToProps)(ProductsList);
....

在renderProductsList函数的开头,将
变量指定给本地变量。如下所示:

renderProductsList() {
  var that = this;
  function mapProductCards(elem) {
    return (
renderProductsList() {
  mapProductCards = (elem) => {
    return (
this.props.products.map(mapProductCards, this);
然后在需要的地方使用
,例如,您的按钮现在是:

<Button onClick={() => that.props.addItemToCart(elem.id)}>Add to Cart</Button>
这将保留
this
对您实际需要的对象的引用


编辑

查看完整代码后,根据您使用
mapProductCards
函数的方式,您需要传入正确的对象以用作
this
。您可以将该对象作为第二个参数传递给
map
。如下所示:

renderProductsList() {
  var that = this;
  function mapProductCards(elem) {
    return (
renderProductsList() {
  mapProductCards = (elem) => {
    return (
this.props.products.map(mapProductCards, this);
您可能会在以下网站上找到超过的文档:

此参数:可选。执行回调时用作此参数的值


我也遇到了这个问题,问题是当我调试代码时,本地的这个ie函数的这个对象给出了未定义的对象。你需要实例化函数的这个对象addItemToCart,因为当你点击按钮时,它会在控制台上给你一个错误

您的方法addItemToCart未定义 要克服这一点,您需要将本地定义为

      renderProductsList() {
      var localThis= this;
}
然后将您的方法称为

onClick={() => localThis.props.addItemToCart(elem.id)}
如果您正在循环中使用函数,那么您需要执行以下操作

this.state.map(function(){


},**this**)

要保留这个

请尝试将这个存储到那个(that=this),并在映射函数(that.props…map())中使用它。
renderProductsList
是一个功能组件?不,它是一个函数。我会在问题中添加一个指向完整代码的链接抱歉,但它没有帮助。顺便说一句,我使用的是“babel插件转换类属性”插件,这让我自动绑定。但不管怎样,我像你说的那样把这个改成了那个,但仍然是一个错误。这是一个错误的屏幕截图。@TarasYaremkiv好的。你在哪一行得到错误?还是在同一个地方吗?这个错误意味着
这个
没有
道具
属性,所以它应该是相关的。我要开始了g PropType出现错误。“171:18错误'addItemToCart'PropType已定义,但从未使用过prop反应/没有未使用的prop类型”。抱歉,这不是同一个错误控制台在
mapProductCards
函数的开始处,在
返回之前,将
对象记录在
中,并在此处发布输出。它在控制台中打印未定义的我。实际上,如果您还没有看到-这里有一个指向整个容器代码的链接抱歉,但它没有帮助。顺便说一句,我正在使用“babel plugin transform class properties”插件,为我自动绑定。这是一个错误的屏幕截图。无法打开您的图像。在office中受限制。您能告诉我错误吗?您能检查一下console.log(这)在您的函数renderProductsList中是否给出undefined?错误实际上是相同的。PropType已定义,但从未使用过prop。react/没有未使用的prop类型。addItemToCart(elem.id)应该可以正常工作。为什么在调用函数时使用prop?