在 React 中将函数向下传递给子组件

2024-04-06

我试图将一个函数传递给 React 中的子组件。如果我将该函数放在 ES6 类中,我就可以访问this.props.dispatch,但无权访问mapStateToProps

相反,当我在 ES6 类之外定义函数时,我似乎可以访问该函数,但不能this.props.dispatch

有人可以找出我做错了什么才能同时访问this.props.dispatch以及具有可用的功能mapStateToProps功能

import React, { Component } from 'react';
import { connect } from 'react-redux';
import DenomInput from '../denomInput/DenomInput.js';
import * as actions from '../../actions/countActions';

class CountableItems extends Component {
  constructor(props) {
    super(props);
    this.onDenomChange = this.onDenomChange.bind(this);
  }

  onDenomChange = (value, denom) => {
    this.props.dispatch(actions.increaseSum(value, denom));
    console.log(value);
  }

  render() {
    const props = this.props;

    let denomGroups = props.denoms.map(function (denom, i) {
      return (
        Object.keys(denom).map(function (key) {
          let denoms = denom[key].map(function (item, i) {
            return <DenomInput denom={item} onDenomChange={props.onDenomChange} key={i}></DenomInput>
          });
          return (<div className="col"><h2>{key}</h2>{denoms}</div>)
        })
      );
    });

    return (
      <div className="countable-item-wrapper">
        <div className="row">
          {denomGroups}
        </div>
      </div>
    );
  }
}

function mapStateToProps(state, ownProps) {
  return {
    denoms: state.count.denomGroups,
    onDenomChange: this.onDenomChange
  }
}

export default connect(mapStateToProps)(CountableItems);

这是渲染的组件<CountableItems>

import React, { Component } from 'react';
import CountableItems from '../components/countableItems/CountableItems.js';
import CountSummary from '../components/countSummary/CountSummary.js';

import "./Count.css";

class Count extends Component {
  render() {
    return (
      <div className="container">
        <div className="row">
          <div className="col-8">
            <CountableItems />
          </div>
          <div className="col-4">
            <CountSummary />
          </div>
        </div>
      </div>
    );
  }
}

导出默认计数;


您想要传递对CountableItems实例的onDenomChange财产。您可以通过引用来做到这一点this.onDenomChange like onDenomChange={this.onDenomChange}.

重要提示:您需要使用箭头函数() => {}为了为了this来参考CountableItems嵌套循环内的实例。常规函数如function () {}不会使用正确的上下文。

import React, { Component } from 'react';
import { connect } from 'react-redux';
import DenomInput from '../denomInput/DenomInput.js';
import * as actions from '../../actions/countActions';

class CountableItems extends Component {
  onDenomChange = (value, denom) => {
    this.props.dispatch(actions.increaseSum(value, denom));
    console.log(value);
  }

  render() {
    let denomGroups = this.props.denoms.map((denom, i) => {
      return (
        Object.keys(denom).map((key) => {
          let denoms = denom[key].map((item, i) => {
            return <DenomInput denom={item} onDenomChange={this.onDenomChange} key={i}></DenomInput>
          });
          return (<div className="col"><h2>{key}</h2>{denoms}</div>)
        })
      );
    });

    return (
      <div className="countable-item-wrapper">
        <div className="row">
          {denomGroups}
        </div>
      </div>
    );
  }
}

function mapStateToProps(state, ownProps) {
  return {
    denoms: state.count.denomGroups,
  }
}

export default connect(mapStateToProps)(CountableItems);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 React 中将函数向下传递给子组件 的相关文章

随机推荐

  • java ProGuard 删除(收缩)未使用的类

    假设我有这个 Java 应用程序 package com site public class MyAppBase package com site free import com site MyAppBase public class My
  • 如何快速了解 SOA? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何使用 GeometryReader 而不填充视图

    这就是我想要的布局 import SwiftUI import PlaygroundSupport struct TestView View let text String var body some View Text self text
  • VBA:单击元素后无法更改图像控制图片

    Setup 我有一个带有图像控件元素的 Excel VBA 用户窗体 当单击表单中的按钮时 图像控件的Picture使用以下代码设置 更新源 Set MyForm imgControl Picture LoadPicture pathToF
  • Angular 5 - 我应该使用哪个来向后导航 - href 或 location.back()?

    我有一个应用程序 可以导航到一个无法前进的页面 想象一下 单击电视指南中的某个节目以打开包含该节目详细信息的页面 显然您会想要返回到电视指南 对于返回电视指南的按钮 我有一个 a tag 最建议的用例是 Using href guide o
  • 按日期和状态获取订单 woocommerce

    我需要获取 woocommerce 中的订单列表 包含开始日期 最终日期和状态 我尝试使用一些技术 如所描述的迈克 乔利 http develop woothemes com woocommerce 2014 08 wc 2 2 order
  • 取子集时保留 R 对象的类属性

    我有一个名为gene table的R对象 它有类foo 现在我将这个gene table子集为 gene data gene table 1 100 1 5 然而 当我打电话时class gene data 它不再属于类foo 但相反 它有
  • 为什么Python3.0中sort/sorted去掉了cmp参数?

    from 蟒蛇维基 https wiki python org moin HowTo Sorting The Old Way Using the cmp Parameter In Py3 0 the cmp parameter was re
  • 正式支持 MonoTouch 的 NoSQL 数据库

    我无法通过设备上的本地数据库找到正式支持 MonoTouch 的 NoSQL 数据库 如果是的话 有人可以在这里提供他们的名单吗 根据http nosql database org http nosql database org 有siaq
  • 尝试在jpa中删除时出现并发问题

    我有 2 个 EAR 1 EAR 和 2 EAR 这些有 websearvices 和其他代码 现在我有 1 个项目 DB prj 用于与数据库交互 现在所有项目 1 EAR 2 EAR DB prj 在各自的 meta inf 文件夹中都
  • 我的域正在 AWS Certificate Manager 中等待验证

    使用 AWS Certificate Manager 配置 mydomain com 并在等待验证中显示超过一天 即使 CNAME 记录已发布到该域名下的 AWS Route53 也是如此 一切似乎都合适 但尚不清楚 为什么域名没有得到验证
  • 404 找不到页面 codeigniter url

    我是一个使用 codeigniter 的初学者 我正在使用以下网址 http localhost ci index php shopcart http localhost ci index php shopcart 访问控制器 我收到错误
  • 验证网站所有权的简化方法(使用 JavaScript?)

    我有一个 Rails 应用程序 它要求用户在提交来自该网站的链接之前验证他们是否拥有该网站 我已经实现了一个网站验证系统 由于给出的答案 该系统可以正常工作我几个月前提出的一个问题 https stackoverflow com quest
  • Json 到 C# 对象处理动态属性

    我正在尝试在 c 对象中实现 json 结构 并且我正在尝试了解如何根据类型使用正确的对象 例如 public class RootObject public string name get set public Content conte
  • 有什么方法可以绘制印度地图吗?

    我正在尝试使用plotly 绘制印度地图 但无法找到方法来做到这一点 下面是我在美国尝试过的代码 import pandas as pd df sample pd read csv https raw githubusercontent c
  • 软件中显示过多“皮肤”检测

    我正在构建一个 ASP NET 网站 用户可以在其中上传自己的照片 每天可能会上传数千张照片 我的老板问过几次的一件事是 是否有任何方法可以检测到是否有任何照片显示太多 皮肤 并在编辑做出最终决定之前自动将这些照片标记为 仅限成人 最好的选
  • 如何确保 div 和同位素没有空白

    我正在尝试创建一个网格布局http www gablabelle com http www gablabelle com 我有多个漂浮着同位素的 div 我想知道为什么有一些空白空间以及为什么漂浮的 div 没有填充间隙 与这里同样的问题
  • CSS 最小宽度 div 不强制其容器达到预期的正确尺寸

    我有一个需要最小宽度的 DIV 我无法使用 CSSmin width因为它不是跨浏览器的 我创建了一个具有设定宽度的内部 div 当浏览器小于这个内部 div 时 我会按预期得到一个滚动条 问题是外部 div 不断缩小 小于内部 div S
  • 如何从 github 手动或离线安装 R 包

    我尝试从 github 下载 tsdyn 包 它尚未在 cran 上更新 但我的代理阻止我连接到 github library devtools install github MatthieuStigler tsDyn ref Dev94
  • 在 React 中将函数向下传递给子组件

    我试图将一个函数传递给 React 中的子组件 如果我将该函数放在 ES6 类中 我就可以访问this props dispatch 但无权访问mapStateToProps 相反 当我在 ES6 类之外定义函数时 我似乎可以访问该函数 但