Sélectionnez la ligne sur cliquez réagir table
Je suis en train d'essayer de trouver la meilleure table de l'utiliser avec mon réagir applications, et pour l'instant, la réagir table offre tout ce dont j'ai besoin (la pagination, le contrôle côté serveur, le filtrage, le tri, la ligne de pied de page).
Ceci étant dit, je ne peux pas semblent être en mesure de sélectionner une ligne. Il n'y a pas exemples qui le montrent.
Certaines choses, que j'ai essayé, notamment, de tenter de définir un nom de classe sur le clic de la ligne. Mais je n'arrive pas à trouver l'élément appelant dans e
ni t
. Aussi, je n'aime pas cette approche, car il n'est pas comment réagir application devrait faire les choses.
<ReactTable
...
getTrProps={(state, rowInfo, column, instance) => {
return {
onClick: (e, t) => {
t.srcElement.classList.add('active')
},
style: {
}
}
}}
/>
Certains solution possible serait de rendre des cases à cocher comme une première colonne, mais ce n'est pas optimal car il limite la zone de cliquer sur "activer" la ligne. Aussi, le retour visuel sera moins expressif.
Ai-je raté l'éléphant dans la pièce? Et si non, connaissez-vous une autre bibliothèque qui prend en charge les choses que j'ai décrit plus haut?
Merci!
EDIT:
Une autre option, ceci étant open source, est de proposer une modification. Et c'est peut-être la bonne chose à faire.
EDIT 2
Autre chose, suggéré par Davorin Ruševljan dans les commentaires, mais je ne pouvais pas le faire fonctionner était:
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'
}
}
}}
Cela définit le "Prenom" colonne "sélectionnées", mais ne définit pas la classe "verte"
OriginalL'auteur gyosifov | 2017-06-30
Vous devez vous connecter pour publier un commentaire.
J'ai trouvé la solution après quelques essais, j'espère que cela peut vous aider. Ajoutez les lignes suivantes à votre
<ReactTable>
composant:Dans votre
state
n'oubliez pas d'ajouter une valeur nullselected
de la valeur, comme:je suppose que vous le pouvez, mais vous devez mettre en œuvre une logique personnalisée pour stocker l'index sélectionné
a fonctionné pour moi aussi, mais j'ai également eu à vérifier que
rowinfo !== undefined
pour éviter des erreurs d'exécutionavez-vous affecté
that
avecthis
? avez-vous mise à jour de l'état sur le clic ?Désolé pour la réponse tardive. Trouvé le lien, c'est ici! github.com/react-tools/react-table/issues/233
OriginalL'auteur Constantin Guidon
Il y a un HOC inclus pour Réagir de Table qui permet la sélection, même lorsque le filtrage et la pagination de la table, la configuration est légèrement plus avancée que la table de base afin de lire les infos dans le lien ci-dessous.
Après l'importation du HOC, vous pouvez alors l'utiliser comme ça avec les méthodes nécessaires:
Voir ici pour plus d'informations:
https://github.com/tannerlinsley/react-table/tree/v6#selecttable
Ici est un exemple:
https://react-table.js.org/#/story/select-table-hoc
OriginalL'auteur Alex
Je ne suis pas familier avec, de réagir de table, donc je ne sais pas, il a le soutien direct pour la sélection et la désélection ce serait bien si elle avait).
Si elle ne le fait pas, avec le morceau de code que vous avez déjà, vous pouvez installer le gestionnaire onCLick. Maintenant, au lieu d'essayer de joindre le style directement à la ligne, vous pouvez modifier l'état, par exemple, en ajoutant certains: fidèle à la ligne de données. Qui déclencherait rerender. Maintenant, vous n'avez qu'à remplacer la façon dont les lignes sont sélectionnées avec le plus === vrai rendu. Quelque chose le long des lignes de:
Comment voulez-vous dire que vous n'avez pas le contrôle, vous fournissez un tableau avec des données de propriété, le changement dans les données
Ce que je voulais dire, c'est que getTrProps ne fait pas partie du nouveau rendu de la page, lorsque les données sont modifiées. Et des nouvelles données de la table n'invoque pas, malheureusement. Je vais modifier ma question avec le chemin que je suis en train de le faire.
OriginalL'auteur Davorin Ruševljan
si tu veux avoir plusieurs choix sur sélectionner la ligne..
OriginalL'auteur Jun Bin
Un autre mécanisme pour un style dynamique est à définir dans le JSX pour votre composant. Par exemple, les activités suivantes pourraient être utilisées de manière sélective le style de l'étape en cours dans le Réagir tic-tac-toe tutoriel (l'une des suggestions supplémentaires de rehaussement de crédit:
Accordée, un nettoyeur approche consisterait à ajouter/supprimer un "selected" classe CSS mais cette approche directe pourrait être utile dans certains cas.
OriginalL'auteur eric gilbertson
La réponse que vous avez sélectionné est correct, cependant, si vous utilisez une table de tri, il tombe en panne depuis rowInfo est devenu indéfinis que vous recherchez, recommande l'utilisation de cette fonction au lieu
OriginalL'auteur andres aguirre gonzalez