如何将点击处理程序从父母正确地传递给孩子?

奥斯汀·瓦莱拉(Austin Walela)

我无法重新构建记分板组件,因为我无法将点击处理程序正确地从父级传递给子级。我究竟做错了什么?

这是我的组件结构

import React, { useState } from "react";
import "./App.css";

function ScoreBoard(props) {
  return (
    <section className="scoreboard">
      <div className="topRow">
        <div className="home">
          <h2 className="home__name">{props.data.home.name}</h2>
          <div className="home__score">{props.data.home.score}</div>
        </div>
        <div className="timer">00:03</div>
        <div className="away">
          <h2 className="away__name">{props.data.away.name}</h2>
          <div className="away__score">{props.data.away.score}</div>
        </div>
      </div>
      <BottomRow />
    </section>
  );
}

function TDButton(props) {
  return (
    <button className={props.side + "Buttons__touchdown"}>
      {props.side.toUpperCase() + " Touchdown"}
    </button>
  );
}

function FGButton(props) {
/* similar to TDButton */
}

function Buttons(props) {
  let scoreCounter = props.scoreCounter;
  return (
    <section className="buttons">
      <div className="homeButtons">
        <TDButton side="home" onClick={scoreCounter("Lions", 7)} />
        <TDButton side="away" onClick={scoreCounter("Tigers", 7)} />
      </div>
      <div className="awayButtons">
        <FGButton side="home" onClick={scoreCounter("Lions", 3)} />
        <FGButton side="away" onClick={scoreCounter("Tigers", 3)} />
      </div>
    </section>
  );
}

function App() {
  const data = {
    home: { name: "Lions", score: 32 },
    away: { name: "Tigers", score: 32 }
  };
  const [homeScore, sethomeScore] = useState(data.home.score);
  const [awayScore, setawayScore] = useState(data.away.score);

  const scoreCounter = (team, amount) => {
    if (team === data.home.name) {
      console.log("in");
      sethomeScore(homeScore + amount);
    } else {
      console.log("out");
      setawayScore(awayScore + amount);
    }
  };

  return (
    <div className="container">
      <ScoreBoard data={data} />
      <Buttons data={data} scoreCounter={() => scoreCounter} />
    </div>
  );
}

最初的组件都存在于App中,因此我试图将其分解为较小的组件。我似乎无法使点击处理程序正常工作。我究竟做错了什么?也许我的组件故障可以得到改善?谢谢!

立方的

您在TButton中添加了道具,但没有在内部使用它。使用这样的东西:

function TDButton(props) {
  return (
    <button className={props.side + "Buttons__touchdown"} onClick={props.onClick}>
      {props.side.toUpperCase() + " Touchdown"}
    </button>
  );
}

所以就像:

    <TDButton side="home" onClick={scoreCounter("Lions", 7)} />

    <button className={props.side + "Buttons__touchdown"} onClick={scoreCounter("Lions", 7)}>
      {props.side.toUpperCase() + " Touchdown"}
    </button>

因为您要将道具传递给父母的活动。

但这仅在scoreCounter(“ Lions”,7)返回一个函数时才起作用,如果它是需要执行操作的常规函数​​,则:

<TDButton side="home" onClick={() => scoreCounter("Lions", 7)} />

所以props是一个函数,而不是函数返回的值。

另外,这可能不是您想要的:

<Buttons data={data} scoreCounter={() => scoreCounter} />

scoreCounter将是返回函数值的函数(回答先前的观点,但您确实需要普通函数,因为上面的函数没有参数,而您使用的“ Lion”将被忽略):

<Buttons data={data} scoreCounter={scoreCounter} />

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将点击处理程序传递给子组件

来自分类Dev

如何将价值从Boostrap模态孩子传递给父母?

来自分类Dev

如何将服务从孩子传递给父母?

来自分类Dev

如何将变量从孩子传递给父母

来自分类Dev

将功能从父母传递给孩子

来自分类Dev

Blazor将数据从父母传递给孩子

来自分类Dev

如何正确地将参数传递给函数?[批]

来自分类Dev

如何正确地将“this”传递给函数?

来自分类Dev

如何正确地将值传递给Flutter中任何窗口小部件的事件处理函数?

来自分类Dev

如何将事件和其他参数传递给点击处理程序

来自分类Dev

反应本地-将导航道具从父母传递给孩子

来自分类Dev

将道具从父母传递给孩子时出错-类型无效

来自分类Dev

如何通过钩子将状态从孩子传递给父母

来自分类Dev

如何正确地将Unicode传递给Perl的DBI层?

来自分类Dev

如何正确地将完整文件名传递给`cmd / c`?

来自分类Dev

您如何正确地将字节对象传递给Python中的新线程?

来自分类Dev

如何正确地将数据传递给<input list>属性?

来自分类Dev

如何正确地将args数组传递给Java中的方法?

来自分类Dev

如何正确地将Win32类对象传递给函数

来自分类Dev

在React中,如何正确地将输入值从子级传递给父级

来自分类Dev

如何正确地将弱引用传递给函数的调用者?

来自分类Dev

如何从SwiftUI LazyVGrid正确地将“单元项”传递给.sheet?

来自分类Dev

如何正确地将文件夹名称传递给Shell脚本?

来自分类Dev

如何正确地将参数传递给fixedthreadpool,并控制线程执行?

来自分类Dev

如何在Rails中正确地将参数传递给特定操作

来自分类Dev

如何正确地将值传递给Google Maps URL方案回调?

来自分类Dev

QML:如何从 C++ 代码正确地将属性传递给 PluginParameter 值?

来自分类Dev

如何在Polymer.dart中监听从父母传递给孩子的事件

来自分类Dev

MVC 4如何将数据正确地从控制器传递到视图

Related 相关文章

  1. 1

    如何将点击处理程序传递给子组件

  2. 2

    如何将价值从Boostrap模态孩子传递给父母?

  3. 3

    如何将服务从孩子传递给父母?

  4. 4

    如何将变量从孩子传递给父母

  5. 5

    将功能从父母传递给孩子

  6. 6

    Blazor将数据从父母传递给孩子

  7. 7

    如何正确地将参数传递给函数?[批]

  8. 8

    如何正确地将“this”传递给函数?

  9. 9

    如何正确地将值传递给Flutter中任何窗口小部件的事件处理函数?

  10. 10

    如何将事件和其他参数传递给点击处理程序

  11. 11

    反应本地-将导航道具从父母传递给孩子

  12. 12

    将道具从父母传递给孩子时出错-类型无效

  13. 13

    如何通过钩子将状态从孩子传递给父母

  14. 14

    如何正确地将Unicode传递给Perl的DBI层?

  15. 15

    如何正确地将完整文件名传递给`cmd / c`?

  16. 16

    您如何正确地将字节对象传递给Python中的新线程?

  17. 17

    如何正确地将数据传递给<input list>属性?

  18. 18

    如何正确地将args数组传递给Java中的方法?

  19. 19

    如何正确地将Win32类对象传递给函数

  20. 20

    在React中,如何正确地将输入值从子级传递给父级

  21. 21

    如何正确地将弱引用传递给函数的调用者?

  22. 22

    如何从SwiftUI LazyVGrid正确地将“单元项”传递给.sheet?

  23. 23

    如何正确地将文件夹名称传递给Shell脚本?

  24. 24

    如何正确地将参数传递给fixedthreadpool,并控制线程执行?

  25. 25

    如何在Rails中正确地将参数传递给特定操作

  26. 26

    如何正确地将值传递给Google Maps URL方案回调?

  27. 27

    QML:如何从 C++ 代码正确地将属性传递给 PluginParameter 值?

  28. 28

    如何在Polymer.dart中监听从父母传递给孩子的事件

  29. 29

    MVC 4如何将数据正确地从控制器传递到视图

热门标签

归档