gpt4 book ai didi

javascript - 为什么我的按钮没有在 React 中渲染?

转载 作者:行者123 更新时间:2023-12-02 23:59:38 25 4
gpt4 key购买 nike

所以我是 react 新手,我想添加渲染逻辑,以便“更新类(class)”和“删除类(class)”按钮仅在以下情况下显示:

  • 有一个经过身份验证的用户。

  • 并且 user._idUserId 匹配这是我到目前为止所拥有的:

类(class)详情

    class CourseDetail extends Component {
constructor(props) {
super(props);
this.state = {
course: [],
user: [] //user state contains user data
};

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

componentDidMount() {
this.handleButtonLogic() {
}


handleButtonLogic() {
const user = this.state;
const isLoggedIn = localStorage.getItem('IsLoggedIn');
const UserId = localStorage.getItem('UserId');
const button = document.getElementsByName('button')
if (!isLoggedIn && user._id !== UserId) {
button.style.display = 'none'
} else {
button.style.display = ''
}
}

render() {
const { course, user } = this.state;

return (//JSX inside
<div>
<div className="actions--bar">
<div className="bounds">
<div className="grid-100">
<span>
<NavLink to={`/courses/${course._id}/update`} className="button">Update Course</NavLink>
<NavLink to={"#"} className="button" onClick={this.handleDelete} > Delete Course</NavLink>
</span>
}

export default CourseDetail;

这是我得到的错误:

React Error

有人可以帮忙吗?

最佳答案

我刚刚将您的逻辑移入渲染本身,并使用三元运算符进行条件渲染。如果用户已通过身份验证并且用户 ID 与当前用户 ID 匹配,则会显示按钮。

仔细看看三元:

{(!isLoggedIn && user._id !== UserId) ? (<span>
<NavLink to={`/courses/${course._id}/update`} className="button">Update Course</NavLink>
<NavLink to={"#"} className="button" onClick={this.handleDelete}>
Delete Course</NavLink>
</span>) : null}

编辑后的代码:如果我们执行以下操作,则不需要 handleButtonLogic() ,我也将其删除了。

class CourseDetail extends Component {
constructor(props) {
super(props);
this.state = {
course: [],
user: [] //user state contains user data
};
}

render() {
const {course, user} = this.state;
const isLoggedIn = localStorage.getItem('IsLoggedIn');
const UserId = localStorage.getItem('UserId');
return (
<div className="actions--bar">
<div className="bounds">
<div className="grid-100">
{(!isLoggedIn && user._id !== UserId) ? (
<span>
<NavLink to={`/courses/${course._id}/update`} className="button">Update Course</NavLink>
<NavLink to={"#"} className="button" onClick={this.handleDelete}>
Delete Course</NavLink>
</span>
) : null}
</div>
</div>
</div>
)
}

export default CourseDetail;

关于javascript - 为什么我的按钮没有在 React 中渲染?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55231340/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com