Op het moment ben ik bezig om met React een sorteerbare lijst te maken. Simpel gezegd komt het hierop neer:
De ul en li's hebben eigen React componenten, waarbij het component van de li's wordt aangeroepen vanuit het component van de ul. Ik maak de lijst sorteerbaar door Sortable op de ul aan te roepen. Zodra de volgorde van de li's is gewijzigd, haal ik de nieuwe volgorde op door middel van toArray en sla ik deze op. Stel dat de gebruiker de li's heeft versleept en dit het resultaat is:
Het gebeurt, volgens mij, altijd dat een nieuwe render van de componenten daarna weer de oude situatie [1, 2] oplevert, ondanks dat de data die bij de render wordt gebruikt de nieuwe situatie [2, 1] representeert:
De ReactElement'en die ik retourneer vanuit render staan net als de aangeleverde data in de juiste volgorde [2, 1]. De li's krijgen unieke keys, zoals staat beschreven in de officiële documentatie. Het toepassen van Sortable op de lijst lijkt het probleem ook niet te zijn. Het toepassen hiervan gebeurt namelijk in de componentDidMount en componentDidUpdate methodes en de hersortering gebeurt direct nadat ik een waarde return in render. Dat heb ik gezien tijdens het debuggen in Chrome.
Wat ik verder nog heb bekeken, is of de data-reactid's in de HTML op de goede plekken staan en dat is ook het geval. Hierna wist ik niet meer waar te kijken en vond ik het tijd om jullie kennis te raadplegen.
HTML:
1
2
3
4
| <ul> <li id="1">1</li> <li id="2">2</li> </ul> |
De ul en li's hebben eigen React componenten, waarbij het component van de li's wordt aangeroepen vanuit het component van de ul. Ik maak de lijst sorteerbaar door Sortable op de ul aan te roepen. Zodra de volgorde van de li's is gewijzigd, haal ik de nieuwe volgorde op door middel van toArray en sla ik deze op. Stel dat de gebruiker de li's heeft versleept en dit het resultaat is:
HTML:
1
2
3
4
| <ul> <li id="2">2</li> <li id="1">1</li> </ul> |
Het gebeurt, volgens mij, altijd dat een nieuwe render van de componenten daarna weer de oude situatie [1, 2] oplevert, ondanks dat de data die bij de render wordt gebruikt de nieuwe situatie [2, 1] representeert:
HTML:
1
2
3
4
| <ul> <li id="1">1</li> <li id="2">2</li> </ul> |
De ReactElement'en die ik retourneer vanuit render staan net als de aangeleverde data in de juiste volgorde [2, 1]. De li's krijgen unieke keys, zoals staat beschreven in de officiële documentatie. Het toepassen van Sortable op de lijst lijkt het probleem ook niet te zijn. Het toepassen hiervan gebeurt namelijk in de componentDidMount en componentDidUpdate methodes en de hersortering gebeurt direct nadat ik een waarde return in render. Dat heb ik gezien tijdens het debuggen in Chrome.
Wat ik verder nog heb bekeken, is of de data-reactid's in de HTML op de goede plekken staan en dat is ook het geval. Hierna wist ik niet meer waar te kijken en vond ik het tijd om jullie kennis te raadplegen.