首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么按钮没有被渲染?

为什么按钮没有被渲染?
EN

Stack Overflow用户
提问于 2020-09-07 10:24:22
回答 1查看 51关注 0票数 0

我正在研究这个React应用程序:https://github.com/eroepken/jeopardy-js

我不明白为什么显示卡片值的按钮(className={clue-card__value ${valueClass}})在被点击后没有呈现出来。我本以为会有某种状态来保存单击的true/false的值,但事实并非如此。我在CSS中也看不到任何东西。

我遗漏了什么?

代码语言:javascript
复制
import React from 'react';

export default class ClueCard extends React.Component {
  constructor(props) {
    super(props);

    this.state = {
      cardText: props.children,
      clueIsShowing: false,
      showAnswerLink: false,
      answerIsShowing: false
    };

    this.showClue = this.showClue.bind(this);
    this.hideClue = this.hideClue.bind(this);
    this.showAnswerLink = this.showAnswerLink.bind(this);
    this.toggleAnswer = this.toggleAnswer.bind(this);
  }

  showClue(e) {
    e.currentTarget.remove();

    this.setState({
      clueIsShowing: true
    });

    setInterval(
      () => this.showAnswerLink(),
      1000
    );
  }

  hideClue() {
    this.setState({
      clueIsShowing: false
    });
  }

  showAnswerLink() {
    this.setState({
      showAnswerLink: true
    });
  }

  toggleAnswer() {
    if (!this.state.answerIsShowing) {
      this.setState({
        cardText: this.props.answer
      });
    } else {
      this.setState({
        cardText: this.props.children
      });
    }

    this.setState({
      answerIsShowing: !this.state.answerIsShowing
    });
  }

  render() {
    let valueClass = 'large';
    if(this.props.value.length === 4) {
      valueClass = 'medium';
    }

    let textClass = 'small';
    if(this.state.cardText.length < 20) {
      textClass = 'large';
    }

    return (
      <div className="clue-card">
        <button className={`clue-card__value ${valueClass}`} onClick={this.showClue}><span className="dollar-sign">$</span>{this.props.value}</button>
        <div className={`clue-card__inner ${textClass} ${this.state.clueIsShowing ? 'show' : 'hidden'}`}>
          <div className="clue-card__inner-wrapper">
            <div className="clue-card__clue">{this.state.cardText}</div>
            <button className={`clue-card__answer-link ${this.state.showAnswerLink ? '' : 'hidden'}`} onClick={this.toggleAnswer}>Toggle Answer</button>
            <button className={`clue-card__close-link ${this.state.showAnswerLink ? '' : 'hidden'}`} onClick={this.hideClue}>Close</button>
          </div>
        </div>
      </div>
    );
  }
}

如果您查看下面的屏幕截图,您可以看到按钮是为第一个线索呈现的,但不是为第二个线索呈现的。这是预期的/所需的功能。我就是不明白为什么按钮不是为已经点击的第二条线索呈现的。如果我看一下代码,我希望按钮总是呈现出来。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-07 11:11:54

删除此命令:

代码语言:javascript
复制
e.currentTarget.remove();

这行代码将删除您的目标元素。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63770616

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档