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

kir*_*gum 4 office-ui-fabric

我正在查看customitemrows但没有太多文档。

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

我必须:

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

但颜色不会改变

小智 6

<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>
  ) }
/>      
Run Code Online (Sandbox Code Playgroud)

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

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

  1. 首先是传递一个常规的 className 并让它覆盖默认样式。如果您需要覆盖悬停状态或其他任何内容,则必须在开发工具中检查并定位适当的类。
  2. 其次是实际推荐并在内部使用以应用默认样式的内容。当您想要覆盖悬停状态或其他任何内容时,使用此方法,您需要为每个样式区域提供样式(在示例中root是其中之一)。有关每行可用的样式区域列表,请点击此链接。有关悬停状态选择器的使用示例,请点击此链接

注意:使用第二种方法,您还可以传递一个样式函数来使用这里IDetailsRowStyleProps看到的。通过这种方式,您可以根据组件的状态拥有非常动态的样式