Я просто переместил вашу логику внутрь самого рендера и использовал троичный оператор для условного рендеринга.Если пользователь прошел проверку подлинности и идентификатор пользователя совпадает с идентификатором текущего пользователя, на нем отобразятся кнопки.
Более пристальный взгляд на троицу:
{(!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;