function parseUrl(url) {
var m = url.match(/^(([^:\/?#]+:)?(?:\/\/(([^\/?#:]*)(?::([^\/?#:]*))?)))?([^?#]*)(\?[^#]*)?(#.*)?$/),
r = {
hash: m[8] || "", // #asd
host: m[3] || "", // localhost:257
hostname: m[4] || "", // localhost
href: m[0] || "", // http://localhost:257/deploy/?asd=asd#asd
origin: m[1] || "", // http://localhost:257
pathname: m[6] || (m[1] ? "/" : ""), // /deploy/
port: m[5] || "", // 257
protocol: m[2] || "", // http:
search: m[7] || "" // ?asd=asd
};
if (r.protocol.length == 2) {
r.protocol = "file:///" + r.protocol.toUpperCase();
r.origin = r.protocol + "//" + r.host;
}
r.href = r.origin + r.pathname + r.search + r.hash;
return m && r;
};
Он работает как с абсолютными, так и с относительными URL
Для всех, кто сталкивался с этой проблемой, вот причина и решение: Причина: Дополнительные рендеры, которые были вызваны обновлением реквизита прокрутки плоского списка (я блокировал вертикальную прокрутку в onOpen from swipeout). Исправлено: избавиться от лишних рендеров, устраняя их в mustComponentUpdate. Для предотвращения повторного рендеринга полного списка при установке реквизита прокрутки вы можете использовать функцию setNativeProps. Удачи всем!