Maison  >  Questions et réponses  >  le corps du texte

Tanstack Table et React JS : Comment afficher/masquer les boutons en fonction de l'état lors de l'utilisation de React JS et Tanstack Table

<p>J'ai réagi js et implémenté une table tanstack (react-table). J'ai besoin d'aide pour afficher ou masquer les boutons/liens en fonction de l'état de chaque ligne. Supposons que s'il y a une ligne contenant le statut, le bouton "Approuver" sera affiché, sinon il sera masqué. </p> <pre class="brush:php;toolbar:false;">......certaines données d'initialisation const [tri, setSorting] = useState<SortingState>([]); const [rowSelection, setRowSelection] = useState({}); const [isApproved, setIsApprove] = useState(false); ...colonne d'appel const colonnes = useMemo<ColumnDef<IEvent>[]>( ...liste des colonnes { accessorKey : "statut", en-tête : () => <span>Status</span>, cellule : (cellule : n'importe laquelle) => let status = cell.getValue(); return cell.getValue(); }, activer le tri : vrai, activerColumnFilter : vrai, }, { accessorKey : "actions", en-tête : () => <span>Action</span>, cellule : (cellule : n'importe laquelle) => console.log(isApproved); retour ( <div className="inline-flex gap-x-2"> <Lien vers={`./${cell.row.id}/edit`}>Modifier</Link> <EVSDeleteButton id={cell.row.id} en-tête="événement" /> <Lien vers={`./${cell.row.id}/agenda`}>Agenda</Link> </div> ); }, activer le tri : faux, activerColumnFilter : faux, },</pré> <p>Je souhaite pouvoir afficher/masquer le bouton ("Agenda") en fonction de l'état de chaque ligne</p>
P粉042455250P粉042455250434 Il y a quelques jours673

répondre à tous(2)je répondrai

  • P粉555682718

    P粉5556827182023-09-03 20:38:40

    Avez-vous déjà utilisé l'opérateur ternaire, Opérateur conditionnel (ternaire)

    répondre
    0
  • P粉006847750

    P粉0068477502023-09-03 19:44:13

    Vous pouvez utiliser la valeur cell.row.original.status 访问每行的 status et afficher le bouton en fonction de cette valeur au lieu de le stocker dans une variable d'état.

    cell: (cell: any) => (
            <div className="inline-flex gap-x-2">
              <Link to={`./${cell.row.original.id}/edit`}>Edit</Link>
              {cell.row.original.status === "Approved" && (
                <Link to={`./${cell.row.original.id}/agenda`}>Agenda</Link>
              )}
            </div>
          ),

    répondre
    0
  • Annulerrépondre