0
votes

Existe-t-il une façon de ne pas reporter une partie d'un état de réaction?

J'ai messages comme état. Cet état peut contenir des milliers d'objets de messages. Lorsque le nouveau message est disponible, un nouvel objet de message sera fusionné sur les messages de messages d'objet. Ainsi, à partir de ce que je comprends, réagir sera tout restituer pour afficher la vue des messages mis à jour.

Y a-t-il une façon de ne pas renoncer à de vieux messages, mais n'ajouterais-t-il que pour rendre le nouveau message? Ou quel est le meilleur moyen d'obtenir la meilleure performance pour cette affaire?


3 commentaires

Cette optimisation est déjà prise en charge en réagissant en utilisant Virtual Dom. Real Dom est mis à jour uniquement par la pièce qui a changé, sauf si vous militez ou fournissez de nouvelles clés. Si vous souhaitez explicitement éviter le renouvellement, vous pouvez utiliser la méthode de la méthode de cycle de vie.


Je recommande Mobx: Medium.com/workday-Engineering/...


@tarzenchugh je pense que cela ne se passe pas sur mon cas: imge.to/i/v3ubbj Vous pouvez voir tous D'autres messages sont re-rendus, et c'est parce que la composante parent Messagelistview a mis à jour les accessoires des messages.


4 Réponses :


0
votes

réagir prend soin de cela, Regardez dans l'outil de profileur fourni dans React Dev Outils, il vous donnera une meilleure idée.

Si vous avez besoin d'éviter de re-rendu, utilisez réact.memo si vous utilisez des crochets (alternative pour DIVERCONPONENDATEDATE)


2 commentaires

Je pense que cela ne se produit pas sur mon cas: imge.to/i/v3ubbj Vous pouvez voir tous les autres messages Soyez re-rendu, et c'est parce que la composante parent MessagelistView a mis à jour les accessoires de messages.


Essayez de faire un composant pur.



0
votes

Lorsque vous appelez SETState SSTATEZ le composant Re-Renders et appelez Dépompconentupdate Si vous revenez, il restituera et si Faux, il ne sera pas, dans cette méthode que vous vérifiez pour quel état mettra à jour la mise à jour de l'État. La fonction appelle et filtrez-la conformément à votre exigence.


0 commentaires

1
votes

Y a-t-il une façon de ne pas renoncer à de vieux messages, mais n'ajouterais-t-il que pour rendre le nouveau message? Ou quel est le meilleur moyen d'obtenir la meilleure performance pour cette affaire?

réagit déjà cela et s'appelle Reconciditation .

Tant que vous spécifiez une touche dans votre composant de message, réagir retiendra les anciens messages et ajoutera uniquement de nouveaux messages. Garanti que les anciens messages ne changent jamais, il est accessoires , état et ref .


2 commentaires

Je pense que cela ne se produit pas sur mon cas: imge.to/i/v3ubbj Vous pouvez voir tous les autres messages Soyez re-rendu, et c'est parce que la composante parent MessagelistView a mis à jour les accessoires de messages.


@Inovramadani S'il vous plaît voir Cette section .



0
votes

Dans mon cas, j'ai ce type d'arborescence de composant:

<MessagesListView messages={messages} />

class MessagesListView extends PureComponent {
  render () {
    this.props.messages.map(message => {
      if (message.type === 'TEXT') return <MessageRow key={message.id} />
      else if (message.type === 'IMAGE') return <ImageRow key={message.id} />
      else if (message.type === 'AUDIO') return <VoiceRow key={message.id} />
    }
  }
}


0 commentaires