-2
votes

(réagir) Je reçois plusieurs matrices en raison de la fonction .map (), comment puis-je définir l'état en un seul tableau?

Les gars je suis un peu confus ici sur la façon d'obtenir un seul tableau sur l'état.

En ce moment, voici comment je définit l'état xxx

Mais ceci est la sortie que je reçois, xxx

ou xxx

donc j'avais dans Photodata les catégories que je Besoin, mais une fois que je les ai mis à l'intérieur de l'état.catégories, ils viennent sur un tableau séparé.

Comment puis-je avoir un objet ou une matrice avec les catégories et retirer le duplicata aussi bien?

Merci


0 commentaires

4 Réponses :


0
votes

Ce serait correct. Et n'utilisez pas composantwillmount code> pour les effets secondaires. Utilisez composentDidMount code> et état par défaut avec une matrice vide par exemple

componentWillMount() {
            axios.get(`api/photo-data`).then(res => {                                      
                this.setState({photoData:res.data})               
                this.state.photoData.map((value, idx) => (
                    value.map((val, idx) => (
                        this.setState({categories:[val.field_categories]})
                    ))
                ))      
            })                              
        }


1 commentaires

Vous venez de copier un composant à la fois copié pour une question originale.



0
votes

Pour aplatir la matrice, vous pouvez utiliser l'opérateur de diffusion lors de la mise à jour de l'état. E.G.

const uniqueCategoriesArray = [...uniqueCategories];


2 commentaires

Merci, j'essaie d'accomplir quelque chose de similaire, mais je ne trouve pas le moyen de régler l'état correctement, je pense que parce que je fixe l'état dans la carte, c'est pourquoi je reçois plusieurs valeurs au lieu d'un tableau


Pourquoi ne définissez-vous pas de variables à ce que vous voulez d'abord, puis définissez l'état après? Peut rendre votre code nettoyeur de code et vous aider à comprendre ce qui se passe mieux



0
votes

Vous ne devez pas utiliser de composantwillmount plus Callback .

Toutefois; Dans votre code, vous pouvez définir l'état des photodata et des catégories en une fois: xxx


1 commentaires

Merci frère, compris et travaillé parfaitement, en utilisant des variables est plus facile à travailler avec les données,



0
votes

Merci gars, j'ai travaillé plus avec des variables et cela a fonctionné super!

    componentDidMount() {
        axios.get(`https://brittdepetter.com/api/photo-data`).then(res => {                                      
           const photoData = [res.data];   
           const categoryList = res.data.map(val => val.field_categories);
           const categories = [...new Set(categoryList)];
           this.setState({ photoData, categories});
        })                              
    }


0 commentaires