Bon, donc j'ai un problème très intéressant avec un rendu conditionnel d'un style avec un className
, ça marche pour une table mais pas pour l'autre.Réagissez le style conditionnel ne rend pas correctement
J'utilise la version 15.6.2 réagir
je la carte sur les données et retourner la première ligne de la table ou le deuxième sur la base si elle est un achat ou non.
if (isBuy) {
return (
<tr key={i} className={(newOrder ? 'updatedOrderTr' : '')} onClick={() => this.props.populateOrderForm(amount, price, isBuy)}>
<td>{order[1].user_depth}</td>
<td>{numberWithDelimiter((price * amount).toFixed(prec))}</td>
<td>{amount}</td>
<td>{price.toFixed(prec)}</td>
</tr>
);
} else {
return (
<tr key={i} className={(newOrder ? 'updatedOrderTr' : '')} onClick={() => this.props.populateOrderForm(amount, price, isBuy)}>
<td>{price.toFixed(prec)}</td>
<td>{amount}</td>
<td>{numberWithDelimiter((price * amount).toFixed(prec))}</td>
<td>{order[1].user_depth}</td>
</tr>
);
}
Je rends deux instances de ce composant qui passe vers le bas un tableau de tableaux structurés comme celui-ci
[ [1, {volume: 1, price: 3}], [2, {volume: 4, price: 2}] ]
La seule différence est une table est la table vente de commandes et un est un ordres d'achat table où les cellules de la table sont inversées.
Les lignes d'ordres d'achat sont affichées correctement et le style s'affiche correctement lorsqu'il est supposé (lorsque newOrder a la valeur true). Les lignes de la table des ordres de vente ne fonctionnent que de manière aléatoire. Voici une vidéo.
https://giphy.com/gifs/3o7aCPUNIy9oA46Y8g/fullscreen
Remarquez comment je dois le spam pour obtenir le côté droit de réellement flash. Quand en réalité le code est exactement le même, seuls les td sont inversés ...
Je suis très confus et j'ai passé de nombreuses heures à jouer avec.
J'ai essayé de faire de la classe qui obtient des styles appliqués simplement un fond uni au lieu d'une animation.
C'est ce que je vérifie l'état de. Ce qui vérifie l'index courant du tableau des ordres par rapport à l'état précédent de ce tableau.
const newOrder = JSON.stringify(this.props.data[i]) !== JSON.stringify(this.state.previousTable[i]);
Serait vraiment apprécier toutes les mains secourables!
Avez-vous vérifié la console du navigateur pour les erreurs? Pouvez-vous également inclure votre code pour votre méthode populateOrderForm? –
Aucune erreur de console. La méthode populateOrderForm n'est pas pertinente pour mon problème. C'est une fonctionnalité complète différente. Le problème est avec le rendu des lignes de la table sur le côté droit. Pour une raison quelconque, ils ne fonctionnent que périodiquement ... Ce qui me bouleverse parce que le code est littéralement identique sauf que les cellules sont permutées –
La raison pour laquelle j'ai demandé à voir populateOrderForm est que votre problème pourrait être dû à votre état de mutation. effets. Vous ne savez pas si votre application partage des données entre les deux listes de données? Si elles le sont et que votre code est en train de muter les données, vous pourriez avoir des effets bizarres. –