In short, react uses a virtual DOM with a smart way to diff changes and only update what has changed. With JQuery, the DOM tree needs to be parsed to search for elements. With react, elements are more local, you can keep a reference to them and use the reference inside an onclick() callback. So react, has in particular 2 interesting things: smart update of the DOM, and no global event system parsing the DOM tree as with jquery or getELemenById().
There are also bottlenecks in react. The most popular use of react to manage the state is to use redux. Every change in the data with redux will trigger rerendering ( calling a function render() that creates the DOM elements in JS) of the components that need the data. Callbacks are often reported as bottlnecks since every render creates the callback functions. In react, it is often recommended to bind the callbacks outside the render function. One library, inferno.js, among all popular libraries (react, vue, angular) claims to have the fastest performance in particular because of having no need of binding or constructing callbacks. The callbacks are only represented as JSON.