【问题标题】:How can I pass a value from the backend to a React frontend and use that value in the CSS for the frontend?如何将值从后端传递到 React 前端并在 CSS 中将该值用于前端?
【发布时间】:2022-01-08 23:42:35
【问题描述】:

我使用 Python 作为我的 React 前端的后端,现在我的后端正在传递像 1787 这样的值,我想在我正在构建的比例中使用该值作为百分比。现在,您可以看到刻度从中间开始:

而且它不会移动到任何地方,因为后端还没有给它一个数字。但如果后端给出的分数为23,则三角形将移动到 div 的 23% 处(黑色边框中的轮廓):

这是我的 React 前端 HTML 部分的代码:

<div
  className={
    !this.state.listening
      ? 'results-container'
      : 'results-container-closed'
  }
>
  <div className="result-wrapper">
    {this.state.score === ''
      ? 'Click record and check your score'
      : 'Your Score: ' + this.state.score}
  </div>
</div>

<div className="scale-container">
  <div className="bar">
    <div className="arrow-up"></div>
    <div className="scale-meter"></div>
    <span></span>
  </div>
</div>

this.state.score 是我从后端获取分数时存储分数的位置。

这是我的 CSS:

.arrow-up {
  width: 0; 
  height: 0; 
  border-left: 25px solid transparent;
  border-right: 25px solid transparent;
  text-align: center;
  line-height: 35px;
  position: absolute;
  top: 54px;
  z-index: 1;
  border-bottom: 25px solid purple;

  animation: scale 4s ease;
}

@keyframes scale {
  from {
    left: 48%;
  }
}
.bar:nth-child(1) .arrow-up{
  left: 23%;
}

.bar:nth-child(1) .arrow-up 部分是我希望根据分数更改left 的位置。有没有一种方法可以做到,而不是硬编码left 值,它可以是left: score%; 之类的东西?

【问题讨论】:

  • 使 python 模板将值放入自己的内联 &lt;script&gt; 作为一些 const initialLoadPercentage = {{ perc }}; 并让 React 在 componentDidMount 上读取这些值?
  • 你可以只对左属性使用内联样式。

标签: css reactjs frontend


【解决方案1】:

您可以使用内联样式,其中this.state.score 将是您对left 属性的值:

style={{ left: `${this.state.score}%` }}

您可以使用反引号将 % 字符串与末尾的 score 值连接起来:

<div
  className={
    !this.state.listening
      ? 'results-container'
      : 'results-container-closed'
  }
>
  <div className="result-wrapper">
    {this.state.score === ''
      ? 'Click record and check your score'
      : 'Your Score: ' + this.state.score}
  </div>
</div>

<div className="scale-container">
  <div className="bar">
    <div className="arrow-up" style={{ left: `${this.state.score}%` }}></div>
    <div className="scale-meter"></div>
    <span></span>
  </div>
</div>

【讨论】:

  • 当我做那个内联样式时,无论分数是多少,条(就像紫色条本身)也会向左移动,你知道如何让它只有箭头移动吗?
  • 是的,对不起。我的错,我会编辑我的答案。现在设置为arrow-up
  • 顺便说一句,非常感谢,我还有一个问题。现在我通过对着我的麦克风说话(使用反应语音识别)来获得我的分数,然后网站获取成绩单并使用 API 对其进行评分,然后将分数吐出到前端。出于某种原因,当我这样做时,分数不会更新,就像屏幕上的箭头不会移动一样。但是当我手动执行它时,它会更新得很好。你会知道为什么会这样吗?
  • 您可以发布另一个关于该问题的问题,因为这是一个不同的问题,或者只是编辑这个问题以获得更多部分。我无法弄清楚顶部,需要查看一些代码。如果您从该库订阅事件,设置状态应该很容易完成。
  • 你好,我只是想告诉你,我在这里发布了另一个关于它的问题:stackoverflow.com/questions/70646685/…,如果你弄清楚为什么会发生这种情况,我将不胜感激!谢谢
猜你喜欢
  • 2012-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多