J'essaie de trouver la meilleure table à utiliser avec mes applications react, et pour l'instant, la table react-table offre tout ce dont j'ai besoin (pagination, contrôle côté serveur, filtrage, tri, ligne de bas de page).
Ceci étant dit, je ne parviens pas à sélectionner une ligne. Il n'y a pas de exemples qui le montrent.
J'ai notamment essayé de définir un nom de classe lors d'un clic sur la ligne. Mais je n'arrive pas à trouver l'élément d'appel dans le fichier e
ni t
. De plus, je n'aime pas cette approche, car ce n'est pas la façon dont une application react devrait faire les choses.
<ReactTable
...
getTrProps={(state, rowInfo, column, instance) => {
return {
onClick: (e, t) => {
t.srcElement.classList.add('active')
},
style: {
}
}
}}
/>
Une solution de rechange possible serait de rendre les cases à cocher en première colonne, mais ce n'est pas optimal car cela limite la zone à cliquer pour "activer" la ligne. En outre, le retour visuel sera moins expressif.
Est-ce que je rate l'éléphant dans la pièce ? Si ce n'est pas le cas, connaissez-vous une autre bibliothèque qui prend en charge les éléments que j'ai décrits précédemment ?
Merci !
EDIT : Une autre option, étant donné qu'il s'agit d'une source ouverte, est de suggérer une modification. Et peut-être que c'est la bonne chose à faire.
EDIT 2
Autre chose, suggérée par Davorin Ruševljan dans les commentaires, mais que je n'ai pas réussi à faire fonctionner :
onRowClick(e, t, rowInfo) {
this.setState((oldState) => {
let data = oldState.data.slice();
let copy = Object.assign({}, data[rowInfo.index]);
copy.selected = true;
copy.FirstName = "selected";
data[rowInfo.index] = copy;
return {
data: data,
}
})
}
....
getTrProps={(state, rowInfo, column) => {
return {
onClick: (e, t) => { this.onRowClick(e, t, rowInfo) },
style: {
background: rowInfo && rowInfo.row.selected ? 'green' : 'red'
}
}
}}
Ceci définit la colonne 'FirstName' comme 'selected', mais ne définit pas la classe comme 'green'.