如何解决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 举报,一经查实,本站将立刻删除。