Я очень плохо знаком с офисным пользовательским интерфейсом, реагирую и реагирую вообще, поэтому не стесняйтесь указывать мне, если я делаю это совершенно неправильно.
Хотя мое требование довольно простое, я просто не могу его понять.
У меня есть страница с представлением списка (Компонент DetailsList из office-ui-fabric-Reactionjs), этот DetailsList получает свои элементы из конечной точки API, которая работает нормально:
componentDidMount() {
_items = []
// Get list of Mediums, then push it to the _items array
axiosTRS.get('/media').then(response => {
response.data.map(item => {
_items.push({ id: item.mediumID, name: item.name, imo: item.imo })
})
this.setState({ items: _items })
})
}
DetailsList заполняется идеально.Однако теперь я хочу добавить кнопку «РЕДАКТИРОВАТЬ» в каждую строку, так что это не отдельный столбец.
Я подумал, что сделаю это со свойством onRenderRow
, в котором отображается DetailLists:
render() {
return (
<div>
<Panel panelHeaderName={'Medium Overview'}>
<div>
<MarqueeSelection selection={this.selection} >
<DetailsList
onRenderRow={this.onRenderRows}
onRenderDetailsHeader={this.onRenderColumn}
selection={this.selection}
selectionMode={this.state.selectionMode}
onColumnHeaderClick={this.sorting}
onColumnResize={this.columnResizer}
layoutMode={DetailsListLayoutMode.justified}
className='customPanel'
columns={this.state.columns}
items={this.state.items}
// onRenderItemColumn={ this._onRenderColumn }
/>
</MarqueeSelection>
<br />
<div align="right">
</div>
</div>
</Panel>
</div>
)
}
В функции onRenderRows
я сначала получаю все реквизиты DetailsRow
, а затем добавляю кнопку Edit:
onRenderRows(props) {
return (
<div>
<DetailsRow
{...props}
/>
<PrimaryButton
onClick={() => {
alert(props.item.name)
}}
text='click me'
/>
</div>
)
}
Проблема в том, что кнопка продолжает отображаться под строкой сданные.Должен ли я исправить это, добавив css
, или как мне лучше всего получить кнопку в той же строке?
Есть ли более простой способ сделать это?Я также попробовал / исследовал возможность добавления дополнительного столбца для кнопок, но я не думаю, что это правильный путь, и у меня это тоже не получилось.
В качестве дополнительного примечания я использую тканевые компоненты с ES6 вместо TSX (как вы, вероятно, заметили).