reactjs - 单击按钮后组件应呈现 EditChannel 组件应呈现
问题描述
单击按钮后 EditChannel 组件应呈现。现在,如果我在单击按钮 EditChannel 之前重新渲染列表项的次数。点击后也会发生同样的情况。我只想要点击按钮后。请在下面找到代码行。点击 EditChannel 组件后应该渲染 Channel 卡组件
import React, { Fragment } from "react";
import { makeStyles } from "@material-ui/core/styles";
import { Typography, Button } from "@material-ui/core";
import Avatar from "@material-ui/core/Avatar";
import { Link } from "react-router-dom";
import { connect } from "react-redux";
import { channelFollow, channelFetchById } from "../../../redux/action/channel";
import EditChannel from "../../Channels/List/Edit";
const ChannelCard = props => {
const classes = useStyles();
const { channel, channelFetchById } = props;
const [open, setOpen] = React.useState(false);
const handleClickOpen = () => {
setOpen(true);
};
const view = (
<div className={classes.card}>
<Link to={`/channels/${channel._id}`} className={classes.link}>
<div className={classes.root}>
<Avatar
alt="Remy Sharp"
src={channel.avatar}
className={classes.bigAvatar}
/>
</div>
<div className={classes.title}>
<Typography
variant="subtitle1"
align="center"
className={classes.text}
>
{channel.channelName}
</Typography>
<Typography variant="body2" align="center">
{channel.introduction}
</Typography>
</div>
</Link>
<Typography variant="body2" align="center" className={classes.text1}>
{channel.follows ? channel.follows.length : 0} followers <br />
Language:{channel.language}
</Typography>
<div className={classes.center}>
<div className={classes.button}>
<div className={classes.buttons}>
<Button
variant="contained"
color="primary"
onClick={() => {
channelFetchById(channel._id);
handleClickOpen();
}}
>
Edit
</Button>
{handleClickOpen ? (
<EditChannel setOpen={setOpen} open={open} />
) : null}
</div>
<div>
<Button color="primary" variant="contained">
Delete
</Button>
</div>
</div>
<br />
</div>
</div>
);
return <Fragment>{view}</Fragment>;
};
export default connect(null, { channelFollow, channelFetchById })(ChannelCard);
解决方案
我猜不是 handleClickOpen 只有 open 会像这样工作,
{open ? (
<EditChannel setOpen={setOpen} open={open} />
) : null}
因为 handleClickOpen 是点击事件而不是布尔变量
推荐阅读
- android - 按下后退按钮时如何阻止活动重新启动?
- php - 在 laravel 中检索 json 数据时遇到问题
- flutter - MaterialButton onPressed 区域在使用分数平移时被剪裁
- c# - 在我的视图中访问我的推荐中的项目
- java - 在准备好的语句中使用无效表
- c# - 如何在 C# 中随时间减少浮点值?
- tensorflow - Uncaught SyntaxError: Unexpected token * chrome extension tensorflow
- android - 将服务器移动到不同 IP 后 Android App 用户的 CertPathValidatorException
- php - 如何改进 laravel 中的查询 - 多表
- python - 更改多索引 df 的索引