I share your concerns about React, but let's be fair here. One reason you're still getting problems with performance is the anonymous functions you're still using inline in your Element
onMouseEnter={()=> props.onMousEnter(props.id)}
This is a new function every time.
However, this is an extremely common error, because the average developer simply does not understand identity and its importance in React and how functional programming really works. Most "I love React" people are simply too ignorant (in the not knowing/understanding how much of the picture they're missing sense) to see how badly it's screwing them.