Реакт не знаю. Но судя по поведению ошибка в том что событие mousedown на элементе, и mouseup тоже, но он должен быть на внешнем враппере или лучше на window. А у тебя захват происходит а отпускание - нет. Ну а дальше начинает в двигаться в зеркальном направлении, это уже из за расчётов, отрицательные числа получаются наверное.
События mouseup / mousedown и должны быть в scope одного элемента - лишь mousemove на document'e. Это на том же learn.javascript.ru писали