11
votes

Réact-dropzone image aperçu ne pas montrer

Utilisation de réact-dresszone ( https://www.npmjs.com/package/react-dropzone ) et obtenir des fichiers se connecter à la console, mais ne pouvez pas obtenir l'aperçu de l'image pour renseigner sur le changement d'état. Aucune idée de ce que je fais mal? XXX

};


0 commentaires

3 Réponses :


8
votes

Vous stockez des fichiers dans ImageFiles , mais dans Render Méthode de mappage sur Ceci.State.files Array.

changer: xxx

à: xxx

ou, car vous avez cette constante const fichiers = Ceci.state.ImageFiles , vous pouvez modifier l'instruction mentionnée sur: xxx


3 commentaires

Malheureusement ... {this.state.imagefiles.lgth> 0?

uploading {this.state.imagefiles.length} this.state.imagefiles ...
{this.state.imagefiles.map ((fichier) => )} : NULL} toujours ne met pas à jour. Suis-je en train de régler l'état de manière incorrecte?


Mettez à jour votre message s'il vous plaît, il est difficile de lire le code du commentaire.


Publié la bonne réponse ci-dessous ~ Merci pour l'aide, LA!



1
votes

Changer votre fonction de rendu sur ImageFiles

render() {
    const files = this.state.imageFiles

    return(
        <form className='join-form' ref='joinForm' autoComplete='off'>
            <Dropzone
                onDrop={this.onDrop}
                className='dropzone'
                activeClassName='active-dropzone'
                multiple={false}>
      <div>Drag and drop or click to select a 550x550px file to upload.</div>
    </Dropzone>

            {this.state.imageFiles.length > 0 ? <div>
    <h2>Uploading {this.state.imageFiles.length} files...</h2>
    <div>{this.state.imageFiles.map((file) => <img src={file.preview} /> )}</div>
    </div> : null}
        </form>
    )


0 commentaires

14
votes

réponse correcte à ceci: être un mannequin et oublié de lier cela. xxx

https://toddmotto.com/react-create-class-versus-component/


2 commentaires

Les accessoires JSX ne doivent pas utiliser .Bind (). Bind in constructeur.


Ne liez jamais une fonction directement dans l'appel de Dropzone Ondrop. L'inconvénient ici est à chaque fois que vous téléchargez une image ou lorsque votre composant rend votre composant / rappelle une nouvelle fonction sera créé dans Webpack Bundle.js et ainsi votre taille de fichier Bundle.js sera augmenté. Donc, au lieu de faire cela, la liaison dans le constructeur toujours, appelez cette référence dans la mesure du possible. Cela crée uniquement une nouvelle fonction lorsque les composants se chargent pour la première fois.