React.js : empêche le rendu de défiler vers le haut de la page

Chaque fois que vous effectuez un rendu dans React.js, l'interface utilisateur défile vers le haut de la page.

JSFiddle: http://jsfiddle.net/bengrunfeld/dcfy5xrd/

Un moyen astucieux ou réactif d'arrêter cela?

Par exemple, si un utilisateur fait défiler la page, puis appuie sur un bouton qui provoque un rendu, l'interface utilisateur restera au même emplacement de défilement qu'auparavant.

// Forces a render which scrolls to top of page
this.setState({data: data});

MISE À JOUR : Pourquoi l'interface utilisateur défile-t-elle vers le haut pour certains rendus, mais pas pour d'autres ?


Solution du problème

Ok, si quelqu'un lit ceci, dans mon cas, le problème n'était pas l'un des ci-dessus. Vous devez essayer les premières suggestions ci-dessus de toute façon. J'ai tout fait, y compris preventDefault()mais ne m'a pas aidé. Le problème était; en utilisant styled-components. Parce que les composants stylés donnent un nom de classe aléatoire à chaque rendu. Donc, il réinitialise le défilement. J'ai donné le nom de la classe à partir de CSS et j'ai résolu mon problème.

Commentaires

Posts les plus consultés de ce blog

La fonction GCP Cloud pour écrire des données dans BigQuery s'exécute avec succès, mais les données n'apparaissent pas dans la table BigQuery

Erreur Symfony : "Une exception a été levée lors du rendu d'un modèle"

Le shell POSIX (sh) redirige stderr vers stdout et capture stderr et stdout dans des variables