Mettre à jour tous les composants React children

Magicien

J'ai un code comme celui-ci:

<Editor source="/api/customer" onCreate={this.debugChange} onDelete={this.debugChange} onUpdate={this.debugChange}>
    <Group title="Address">
        <Column id="id" label="ID" default={0} readonly />
        <Column id="name" label="name" default="" />
        <Column id="address" label="Address" default="" />
        <Column id="country" label="Country" default={currentCountry} readonly source="/api/country" idfield="id" captionField="name" />
    </Group>
    <Group title="Payment">
        <Column id="tax" label="TaxType" default={0} source="/api/taxtype" idfield="id" captionField="name" />
        <Column id="bank" label="Bank" default="" source="/api/banks" idfield="id" captionField="bank"/>
        <Column id="account" label="Account Number" default="" />
    </Group>
</Editor>

L'éditeur a une render()fonction comme celle-ci:

    let components = React.Children.map(this.props.children, (child) => {
        return <Column {...child.props} default={row[child.props.id]} onChange={this.onChange.bind(this)} />
    })

    return <div className="hx-editor">
        <div className="hx-editor-list">
            <List id={this.props.id + "-list"} source={this.props.source}
                singleShow captionField={this.caption.bind(this)}
                groupfn={this.props.group} onSelect={this.onSelect.bind(this)} />
        </div>
        <form name={"hx-form-" + this.props.id} className="hx-form">
            {components}
            {buttons}
        </form>
    </div >

J'ai la fonction comme celle-ci à <List>'sonSelect

private onSelect(id: string, data: T) {
    this.setState({
        currentRow: data,
        modifiedRow: data
    })
}

<Editor>affichera une liste de /api/customeravec <List>, et enverra les valeurs sélectionnées aux onSelectaccessoires, qui à leur tour mettent à jour tous les <Column>enfants. Les données correspondent à l'ID de la colonne, par exemple:

data = [{
    id: 0,
    name: 'My Customer',
    address: 'This is Address',
    country: 'US',
    tax: '010',
    bank: 'HSBC',
    account:: '89238882839304'
}, ... ]

Cette méthode que j'ai mise ici, ne fonctionne qu'avec les enfants directement sous <Editor>, mais pas sous <Group>.

Ma question est la suivante: comment puis-je mettre à jour en profondeur toutes les valeurs des enfants de <Column>as <Editor>lorsqu'un utilisateur a cliqué sur une valeur dans <List>. Je veux dire, effectuez une <Column>recherche dans tous les enfants et mettez à jour toutes les valeurs, peu importe où elles se trouvent, aussi longtemps que dans la <Editor>balise.

Toute aide est appréciée. Je vous remercie

Magicien

Ok ... Cela cassera Typescript, je ne sais pas comment le taper correctement dans Typescript, mais celui-ci fonctionne.

private deepColumn(children: React.ReactNode) => any) {
    return React.Children.map(children, child => {
        if (child.props.children) {
            child = React.cloneElement(child, {
                children: this.deepColumn(child.props.children)
            })
        }
        if (child.type.name == "Column") {
            return <Column {...child.props} default={this.default} onChange={this.onChange.bind(this)} />
        } else return child;
    })
}

Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.

En cas d'infraction, veuillez [email protected] Supprimer.

modifier le
0

laisse moi dire quelques mots

0commentaires
connexionAprès avoir participé à la revue

Articles connexes

react setState () met à jour tous les composants dans le navigateur

react-redux peut mettre à jour les composants intelligents enfants sans mettre à jour les parents?

Apache Wicket - Le meilleur moyen de mettre à jour tous les composants partageant un certain modèle

Mise à jour de tous les composants angulaires

Mettre à jour les composants créés dynamiques

Mettre à jour les composants créés dynamiques

Comment mettre à jour les propriétés individuelles des objets dans les états des composants React?

Pourquoi React Hooks met-il à jour tous les composants enfants si un état change ?

Comment mettre à jour le texte du badge Material-bottom-tabs sans re-rendre tous les composants enfants?

Redux: mettre à jour un élément dans une liste sans mettre à jour tous les autres composants qui dépendent de cette liste

Mettre à jour les données des composants enfants sur le parent Actualiser React Native

Mettre des composants React dans le réducteur pour gérer les mises à jour d'état ?

mettre à jour globalement tous les uitableviewcell

Mettre à jour tous les packages sauf un

Mongoose mettre à jour tous les documents

Mettre à jour tous les enfants dans Firebase

Mettre à jour tous les enregistrements Django Orm

Comment importer tous les composants dans React?

Comment mettre à jour les données entre les composants?

comment mettre/mettre à jour tous les attributs json de jsonArray

Mettre à jour correctement les composants de la balançoire?

Comment mettre à jour correctement les composants de la bibliothèque

Comment mettre à jour dynamiquement les styles de composants angulaires

Mettre à jour Vue Router sans remonter les composants?

Mettre à jour UI Framework CSS pour les nouveaux composants Web

Modifier / mettre à jour les composants FXML dans une autre classe

ne peut pas mettre à jour la valeur parente tous ensemble dans les crochets React useEffect avec la mise à jour setTimeout

Comment mettre à jour l'état des composants dans React ?

Comment mettre à jour efficacement un tableau de composants dans React

TOP liste

  1. 1

    J'ai besoin de savoir si ces deux phrases sont les mêmes en programmation

  2. 2

    Javascript indiquant "impossible de définir la propriété 'innerHTML' sur null"

  3. 3

    Nextcloud avec Docker: impossible de créer ou d'écrire dans le répertoire de données

  4. 4

    La taille de la forme n'est pas égale à la taille de la cellule du tableau et ajuste le texte à l'intérieur de la forme

  5. 5

    Trouver l'intersection et l'union de deux rectangles

  6. 6

    Comment changer la couleur de la police dans R?

  7. 7

    Empêcher l'allocation de mémoire dans la génération de combinaison récursive

  8. 8

    Référencement des assemblys de structure .net 4.7 dans la solution .net core 2

  9. 9

    Compter combien de fois un nombre apparaît dans un tableau aléatoire

  10. 10

    Pourquoi utiliser Asyncio ne réduit pas le temps d'exécution global en Python et n'exécute pas les fonctions simultanément?

  11. 11

    Comment convertir une chaîne en tuple en utilisant `reads`?

  12. 12

    java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver

  13. 13

    comment afficher un bouton au-dessus d'un autre élément ?

  14. 14

    Création d'un nouvel objet d'une classe avec un nouveau nom en cliquant sur un bouton dans java swing

  15. 15

    comment supprimer "compte de connexion google" à des fins de développement - actions sur google

  16. 16

    Restauration de la sauvegarde de la base de données SQL Server sur la version inférieure

  17. 17

    Créer un graphique à barres avec une fréquence relative / à partir d'un objet de table dans R

  18. 18

    Création d'un rappel python pour une fonction C à partir d'une DLL avec un tampon char.

  19. 19

    java.lang.NoClassDefFoundError: org / springframework / data / repository / config / BootstrapMode

  20. 20

    comment le contrôle de tableau javascript devrait-il être

  21. 21

    impossible d'ouvrir un nouvel onglet dans react, ajoute localhost: 3000 sur le lien?

chaudétiquette

Archive