Size: a a a

2021 November 06

YK

Yury Khmarin in JS
нужен аналог instantClick  или   quickClick но для Реакта, как это осуществить?
источник

Я

Ярослав in JS
Через quicklink вроде, оборачиванием компонента. Но вообще хз))
источник
2021 November 08

PD

Petya Danchuk in JS
проект на React. в своей фичеветке я добавляю propTypes компонентам. один компонент был такой
const TitleComponent = ({
 titleType, children, className, subtitle, id, targetBrowser = "",
}) => (
 <>
   <Title titleType={titleType} id={id} className={className}>{titleSerializer(children, targetBrowser)}</Title>
   {
     subtitle && <Subtitle id={id}>{subtitle}</Subtitle>
   }
 </>
);
export default TitleComponent;

// эти propTypes я добавлял
TitleComponent.propTypes = {
 titleType: PropTypes.oneOf(["h1", "h2", "h3", "h4", "h5", "h5", "h6"]),
 children: PropTypes.node,
 className: PropTypes.string,
 subtitle: PropTypes.string,
 id: PropTypes.string,
 targetBrowser: PropTypes.string,
};

я влил правки из develop. этот компонент изменили и он стал таким
const TitleComponent = React.forwardRef(({
 titleLevel,
 titleAlign,
 children,
 className,
 subtitle,
 id,
 targetBrowser = "",
}, ref) => {
 if (subtitle) {
   return (
     <>
       <Title titleAlign={titleAlign} titleLevel={titleLevel} id={id} className={className}>{titleSerializer(children, targetBrowser)}</Title>
       <Subtitle titleAlign={titleAlign} id={id}>{subtitle}</Subtitle>
     </>
   );
 }
 return (
   <Title ref={ref} titleAlign={titleAlign} titleLevel={titleLevel} id={id} className={className}>{titleSerializer(children, targetBrowser)}</Title>
 );
});
export default TitleComponent;

помогите пожалуйста мои propTypes подкорректировать под новый вид компонента.
источник

PD

Petya Danchuk in JS
а что этот код делает в плане логики? я что-то втыкаю и не пойму (
regex - это регулярка - new RegExp("https:\\/\\/([^"]*(?:${.svg})[^"]*)", "g");
baseUrlPath - урл домен, с протоколом или без
urlString - урл в виде строки. ссылки на разные картинки обычно, полный путь
const replacer = regex => string.replace(regex, (match, urlString) => {
     if (match.includes(baseUrlPath)) {
       return match;
     };
     //////// some code
   });

мне фрагмент
if (match.includes(baseUrlPath)) {
       return match;
     };

совсем непонятен
источник

Я

Ярослав in JS
Заменяет часть строки попадающую под шаблон на первое вхождение искомой подстроки заданной этим шаблоном (regex), если подстрока найдена.
В качестве параметра regex предполагается регулярка, судя по имени :) причем регулярка со скобочной группой (захват)
// но это будет работать и со строкой в аргументе, так что именование тут так себе, как и код в общем

Ну а фрагмент
if (match.includes(baseUrlPath)) {
       return match;
     };
всего лишь проверяет наличие в найденной подстроке другой подстроки (из переменной baseUrlPath).
Короче, тут надо было делать через конструктор рег.выражений, но автор кода видать не читал MDN, или просто поленился :)
источник

PD

Petya Danchuk in JS
меня еще и название match сбило с толку. спасибо, теперь понятнее
источник

Я

Ярослав in JS
Этим параметром match в коллбэк передается полный текст совпадения. Следующий параметр - первая скобочная группа.
Вот просто возьми и выполни в консоли
'foobarbaz'.replace(/^foo(bar).*$/i, (m, g1) => {
 console.log({ m, g1 });
 return g1;
});
Воспроизвести аналогичную ситуацию в упрощенном виде - это же минутное дело... разница с исходником только в отсутствии условия с вложенным строковым поиском.
Тут на самом деле все проще решается, без нагромождения "коллбэк+if", в комменте выше это уже упоминалось. Разберись как сделать правильно - и тогда сразу отпадет потребность понимать этот код, который попросту не нужен 🙂 Все что нужно сделать, это создать регулярку в рантайме (через конструктор RegExp, а не литералом) - и использовать replace можно будет в привычном простом виде, без лишнего коллбэка.
источник

Я

Ярослав in JS
Короче, если хочется понять лишний код в исходнике, то см. статью о replace. А если хочется сделать правильно, то см. статью о конструкторе RegExp. Второй вариант лучше не пропускать даже при выборе первого))
источник

Я

Ярослав in JS
Оффтоп: оказывается, код с опциональным чейнингом и non-nullable конверсией иногда сложнее читать, чем императивные проверки 😅
(fields.items['orderid'] as PkFormTextField?)?.controller!.text = invoice.orderId ?? '';
источник
2021 November 09

YK

Yury Khmarin in JS
inDesign вообще в почёте, не?
источник

А

Алексей in JS
Прошу помочь! браузер не видит клика на элемент DOM, что делать?
источник

А

Алексей in JS
источник

Я

Ярослав in JS
Изучать верстку, осваивать работу с devtools браузера.
Там пекрекрытие элементов (наложение по z, вот клик и не доходит до того что "внизу").
источник

А

Алексей in JS
а как исправить? может z-index у нужного блока поднять?
источник

Я

Ярослав in JS
Можно и поднять, но имхо лучше будет подучить верстку и переверстать заново.
источник

Я

Ярослав in JS
Там в основном проблема в фиксированной ширине соседнего элемента, которая несколько неадекватна его контенту. Попробуй убрать фиксированную ширину у .select__label::after.
источник

Я

Ярослав in JS
И в целом не следовало абсолютить эти элементы "прибивая гвоздями" их по пиксельным смещениям - вместо этого лучше позиционировать их контейнер, а внутри него использовать обычный флоу.
источник

Я

Ярослав in JS
А, не, в этом порядок, оба relative. Я не туда посмотрел))
источник

А

Алексей in JS
мне сказали, что в DOMContentLoaded проблема. Но я его и на load менял и вовсе убирал, но ничего не помогло...
источник

Я

Ярослав in JS
Выше я уже написал в чем проблема. См. сообщение отправленное в 10:00 МСК. Ширина элемента в CSS установлена неадекватно контенту, слишком большая => наползание.
источник