семантический интерфейс реагирует на выбор ячеек таблицы не работает - PullRequest
0 голосов
/ 29 августа 2018

В моем приложении Reactjs я хочу создать таблицу с выбираемыми ячейками. при нажатии на каждую ячейку верните мне значение. согласно документации , я должен просто выбрать selectable. поэтому я определил как:

<Table.Cell selectable key={j + k} onClick={this.handleCellClick(j, k)}> {j + k} </Table.Cell>
Значения

this j, k поступают из отображения оболочки Table.Row и Table.Column, а метод-обработчик теперь просто console.log. когда представление отображается, onClick вызывается в каждой ячейке. также при нажатии на каждую ячейку ничего не происходит. Как я должен выбрать ячейку в семантической-UI-реагировать.

1 Ответ

0 голосов
/ 29 августа 2018

Опора selectable контролирует только имена классов семантического пользовательского интерфейса, которые отображаются в ячейке, которая придает ей стиль.

В документации, на которую вы ссылаетесь, показано, что опора selectable создает ячейку таблицы, содержащую тег <a>, занимающий все пространство ячейки, а не только текст, который она переносит. Вы можете увидеть, как это изменение произошло, удалив выбираемую опору из одного из этих <Table.Cell> компонентов в примере, и вы увидите, что текст даже меняется на цвет ссылки, и только текст кликабелен.

Я бы порекомендовал вам следовать разметке, которую вы видите в примере, и поместить свой обработчик щелчков на тег <a> внутри <Table.Cell selectable>, если вы хотите использовать эту опору (или не использовать опору, если Вы хотите, чтобы на текст можно было кликать).

Другая проблема, с которой вы сталкиваетесь, заключается в том, что у вас нет какой-либо привязки к вашему методу класса обработчика кликов, поэтому при рендеринге компонента каждая строка, в которой вы используете обработчик, вызывает этот метод класса. Вам нужно добавить привязку к методу класса. Я бы рекомендовал не связывать с функцией стрелки внутри вашего компонента. Вместо этого вы должны привязать конструктор или непосредственно к самому методу класса следующим образом: handleCellClick = (j,k) => {}. Обратите внимание, что метод класса имеет функцию стрелки, связывающую его, а не просто handleCellClick(j,k) {}.

...