如何在React中显示单击按钮的名称?

他们正在研究纸,石头,剪刀的游戏。我想在按下按钮之一后在“结果”组件中显示其ID。我该怎么办?

App.js

import React,{ Component } from "react";
import "./App.scss";
import SubmitInfo from "./SubmitInfo";
import ResultInfo from "./ResultInfo";

class App extends Component {
  constructor(props) {
    super(props);

    this.test = this.test.bind(this);
  }

  test = id => {
    //return <Result id={this.props.id}></Result>
    console.log("test");
  };

  render() {
    return (
      <div>
        <div classname="board">
          <div classname="title_row">
            <h1 classname="title">Kamień,Papier,Nożyce</h1>
          </div>
        </div>
        <div classname="board">
          <div classname="submit_row">
            <SubmitInfo id="papier" click={this.test} />
            <SubmitInfo id="kamien" click={this.test} />
            <SubmitInfo id="nozyce" click={this.test} />
            <ResultInfo id={this.test} />
          </div>
        </div>
      </div>
    );
  }
}

export default App;

SubmitInfo.js

转移到id道具并单击事件,然后渲染三个带有不同图标的按钮。

import React from "react";
import styles from "./submit.scss";
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import {
  faHandPaper,faHandScissors,faHandRock
} from "@fortawesome/free-solid-svg-icons";
import ResultInfo from "./ResultInfo";

function Submit({ id,click }) {
  if (id === "nozyce") {
    return (
      <button classname="submit" onClick={click}>
        <FontAwesomeIcon classname="icon" icon={faHandScissors} />
      </button>
    );
  } else if (id === "papier") {
    return (
      <button classname="submit" onClick={click}>
        <FontAwesomeIcon classname="icon" icon={faHandPaper} />
      </button>
    );
  } else if (id === "kamien") {
    return (
      <button classname="submit" onClick={click}>
        <FontAwesomeIcon classname="icon" icon={faHandRock} />
      </button>
    );
  }
}

export default SubmitInfo;

ResultInfo.js

在这里,我想显示单击的按钮的ID。

import React,{ Component } from "react";

class ResultInfo extends Component {
  render(props) {
    return (
      <div>
        {" "}
        {this.props.id}
        {console.log(this.props.id)}
      </div>
      //<div></div>
    );
  }
}

export default ResultInfo;
lihuizi0806 回答:如何在React中显示单击按钮的名称?

您应该使用 state 。在构造函数中对其进行初始化

constructor(props) {
  super(props);

  this.state = {
    id: null,};
}

您的测试功能,应使用ID设置状态

test = id => {
  this.setState({
    id,});
};

ResultInfo组件应将状态ID接收为属性

<ResultInfo id={this.state.id} />

然后,SubmitInfo组件上的按钮应调用click函数,并将id作为参数

<button className='submit' onClick={() => click(id)}>Rock</button>
,

大卫的解释是正确的。

我当时正在并行研究codesandbox example,认为这会有所帮助。

您还有一些其他错误,例如导出默认的SubmitInfo而不是Submit,并且可以使用ResultInfo组件的条件渲染。

本文链接:https://www.f2er.com/3163323.html

大家都在问