React单击按钮时显示按钮列表

如何解决React单击按钮时显示按钮列表

我从React开始,我正在制作一个简单的应用程序来练习,在这个应用程序中,我得到了具有以下代码的App.js:

import React,{useState} from 'react';
import { Box } from '@material-ui/core/';
import Typography from '@material-ui/core/Typography';
import Container from '@material-ui/core/Container';
import BotonInicial from './components/botonInicial'
import NumeroJugadores from './components/numeroJugadores'


function App() {

return (
  <Box color="text.primary" clone>
    <Container maxWidth="sm" style={{ textAlign: "center" }} >

      <Typography variant="h2" component="h2" style={{ color: "grey",verticalAlign: 
        "middle",padding: "10px" }}>
        Five Crowns Counter
      </Typography>

      <BotonInicial label={"Empieza el Juego!!"} />
      <br />
      <br />
      <NumeroJugadores visible="true"/>

    </Container>
  </Box>
);


 }

 export default App;

在两个不同的文件中,获得了“ BotonInicial”和“ NumeroJugadores”组件。

botonInicial.js

import React from 'react';
import {Button} from '@material-ui/core/';

function BotonInicial(params) {
      console.log(params)
      return (
      <Button 
        variant="contained" 
        color="secondary" 
        style= {{padding: "20px"}} 
        onClick={Change the state on the NumeroJugadores Component}
      >
      {params.label}
      </Button>
      );
  }
  
  export default BotonInicial;

numeroJugadores.js

import React from 'react';
import {ButtonGroup,Button} from '@material-ui/core/';


function NumeroJugadores(params) {
    if(params.visilble){
    return (
      <ButtonGroup variant="contained" color="primary" aria-label="contained primary button group" >
        <Button>1 P</Button>
        <Button>2 P</Button>
        <Button>3 P</Button>
        <Button>4 P</Button>
        <Button>5 P</Button>
        <Button>6 P</Button>
        <Button>7 P</Button>
    </ButtonGroup>
    );
    }else {return null;}
  
}
  
  export default NumeroJugadores;

我正在尝试此功能:当用户单击按钮时,“ NumeroJugadores”应该出现,更改了“ visible” = true的属性。我已经尝试过使用州和州Hook,但没有成功。我应该采用哪种方法

解决方法

您可以使用react挂钩帮助有条件地显示/隐藏元素。

在您的App.js中(注意,我在NumeroJugadores中删除了visible =“ true”,我在BotonInicial中添加了handler参数,并使用visible添加了条件) / p>

带有visible的条件基本上意味着,如果visible为true,则呈现NumeroJugadores

function App() {
  const [visible,setVisible] = useState(false);
  const showButtons = () => setVisible(true);

  return (
    <Box color="text.primary" clone>
      <Container maxWidth="sm" style={{ textAlign: "center" }} >

        <Typography variant="h2" component="h2" style={{ color: "grey",verticalAlign: 
          "middle",padding: "10px" }}>
          Five Crowns Counter
        </Typography>

        <BotonInicial label={"Empieza el Juego!!"} handler={showButtons} />
        <br />
        <br />
        {!!visible && <NumeroJugadores />}

      </Container>
    </Box>
  );
}

对于您的BotonInicial,将handler传递到onClick

function BotonInicial(params) {
      console.log(params)
      return (
      <Button 
        variant="contained" 
        color="secondary" 
        style= {{padding: "20px"}} 
        onClick={params.handler}
      >
      {params.label}
      </Button>
      );
  }

然后您就可以清理NumeroJugadores,

function NumeroJugadores() {
    return (
      <ButtonGroup variant="contained" color="primary" aria-label="contained primary button group" >
        <Button>1 P</Button>
        <Button>2 P</Button>
        <Button>3 P</Button>
        <Button>4 P</Button>
        <Button>5 P</Button>
        <Button>6 P</Button>
        <Button>7 P</Button>
    </ButtonGroup>
    );
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?