如何有条件地更改详细信息列表中一行的颜色?

How to conditionally change a color of a row in detailslist?

我正在查看 customitemrows,但文档不多。

我有一个 table,如果当前用户创建了一行,我想将颜色从黑色更改为灰色。我可以用 style 做到这一点。我了解如何有条件地更改 customitemcolumns 中的颜色,但无法将其外推到行。

我必须:

    _onRenderRow = (props) => {
    return props.item['creatorUid'].match("QDN6k4pLXkea2qRM9mS7vM6whBE3")?
        <DetailsRow {...props} style={{color:"#FF0000"}}/>
        :
        <DetailsRow {...props}/>
}

但是颜色没变

<DetailsList 
  items={ items } 
  columns={ columns }  
  onRenderRow={ (props, defaultRender) => (
    <div className='red'>
      {defaultRender({...props, className: 'red'})}            
    </div>
  ) }
/>

<DetailsList 
  items={ items } 
  columns={ columns }  
  onRenderRow={ (props, defaultRender) => (
    <div className='red'>
      {defaultRender({...props, styles: {root: {background: 'red'}}})}            
    </div>
  ) }
/>      

https://codepen.io/vitalius1/pen/pQmpVO

在这里您可以看到 2 种方法可以实现您的要求。

  1. 首先是传递一个常规类名并让它覆盖默认样式。如果您需要覆盖悬停状态或其他任何内容,您必须在开发工具中检查并定位适当的 类.
  2. 其次是实际推荐和内部使用的应用默认样式。使用此方法,当您想要覆盖悬停状态或其他任何内容时,您需要为每个样式区域提供样式(在示例中 root 就是其中之一)。对于每行可用的样式区域列表,请遵循 this link. For an example on usage of the selectors for hover states follow this link.

注意:使用第二种方法,您还可以传递样式函数以利用 IDetailsRowStyleProps,如 here 所示。这样你就可以根据组件的状态拥有非常动态的样式