【问题标题】:React - Dynamic background colors to parent and childReact - 父母和孩子的动态背景颜色
【发布时间】:2020-06-02 09:04:07
【问题描述】:

在 React 中,我有这个组件层次结构:

App
  Header
  WaitingPage
    PlaceInLine
    NextRoom
    EstimatedTime
  Footer

我希望元素的背景是:白灰白灰等等。 (例如 - 白色 Header、灰色 PlaceInLine、白色 NextRoom 等等......)。 问题是在 WaitingPage 中,它并不总是包含所有 3 个孩子。它从服务器获取数据,例如,如果它排成一行,它将显示 PlaceInLine。当网站运行时,另一个数据可能会到达。

我尝试创建一个名为 ColorGiver 的类,它每次都会为您提供下一种颜色,但是当我将它作为道具传递给 WaitingPage(在使用它获取页眉的背景之后)时,网站的页眉和WaitingPage 的第一个子元素都是白色的。我想这是因为 React 渲染元素的顺序,但我不知道它是如何完成的......

<Header backgroundColor={this.colorGiver.next()} />
<WaitingPage colorGiver={this.colorGiver} />
<Footer backgroundColor={this.colorGiver.next() />

实现它的最佳方法是什么?

【问题讨论】:

  • 请附上您迄今为止尝试过的内容。
  • 您可以使用 @Jacek Walasik 回答 WaitingPage 部分。但是我认为你必须使用 js 作为页脚并进行 css cumpted 测试来分配页脚的颜色。

标签: javascript reactjs


【解决方案1】:

纯 CSS 会非常简单:

className:nth-child(even) {background: #CCC}
className:nth-child(odd) {background: #FFF}

【讨论】:

  • 问题是所有元素不在同一级别。 @AviadBagno 您可以将此代码用于等待页面的内部
  • 是的。但是内部顺序不会和上层协调,可能会出现WaitingPage的最后一个元素是灰色的,而Footer也是灰色的..
  • 哦,我有点误解了这个问题,因为HeaderWaitingPage 仅固定Footer 颜色会根据WaitingPage 孩子的数量而改变,id 计算他们并检查数字是否为奇数或偶数。
  • 好的,我试试。谢谢!
  • 我是否应该使用每次更改子项数量时调用的回调来检查 WaitingPage 子项的数量?还是有更好的办法?
猜你喜欢
  • 2019-12-27
  • 2020-12-15
  • 1970-01-01
  • 2017-08-23
  • 1970-01-01
  • 2016-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多