Size: a a a

2020 November 21

I

Ilya in React Kyiv
Или в трансформе добавь translateZ(0)
источник

I

Ilya in React Kyiv
В твоём случае translate3d
источник

М

Мерч in React Kyiv
не, все также тупит
источник

М

Мерч in React Kyiv
и кста, с каждым новым нажатием мыши сдвиг сбрасывается
источник

IK

Ivan Kazadaev in React Kyiv
Ребят, всем привет!
Переписываю проптайпсы в проекте на интерфейсы, не понимаю как правильно в интерфейсе conditional type сделать для пропсы formName.
Можете подсказать что-нибудь?

interface IPasswordInputProps {
   onWatch?: () => void,
   formName: (props, propName) => (props.onWatch && !props[propName] ? new Error('Provide formName prop') : null),
}
источник

IH

Ilya Human in React Kyiv
Ivan Kazadaev
Ребят, всем привет!
Переписываю проптайпсы в проекте на интерфейсы, не понимаю как правильно в интерфейсе conditional type сделать для пропсы formName.
Можете подсказать что-нибудь?

interface IPasswordInputProps {
   onWatch?: () => void,
   formName: (props, propName) => (props.onWatch && !props[propName] ? new Error('Provide formName prop') : null),
}
Тебе надо типы описать, а ты прям логику генерации ошибки записываешь
Как вариант просто указать formName: (props, propName)  => Error | null;
источник

IK

Ivan Kazadaev in React Kyiv
Та я просто для рефа formName через проптайпс оставил, думал узнать как это переписать)
По сути, мне нужно подобное поведение :
- если передал в компонент пропс onWatch, то нужно обязательно передать formName (string)
источник

I

Ilya in React Kyiv
Ilya Human
Тебе надо типы описать, а ты прям логику генерации ошибки записываешь
Как вариант просто указать formName: (props, propName)  => Error | null;
Это валидотор пропсы
источник

I

Ilya in React Kyiv
Ivan Kazadaev
Та я просто для рефа formName через проптайпс оставил, думал узнать как это переписать)
По сути, мне нужно подобное поведение :
- если передал в компонент пропс onWatch, то нужно обязательно передать formName (string)
Сделай обе пропсы опциональными
источник

I

Ilya in React Kyiv
И в рендере сделай devAssert и перенесу туда эту проверку
источник

I

Ilya in React Kyiv
Хотя ты можешь и проптайпах это оставить
источник

I

Ilya in React Kyiv
Просто будет и проптайп и интерфейс
источник

IH

Ilya Human in React Kyiv
Ilya
Это валидотор пропсы
Немного не понял про валидацию пропсы ?
Тут же просто описании типов этой пропс функции
источник

I

Ilya in React Kyiv
Ilya Human
Немного не понял про валидацию пропсы ?
Тут же просто описании типов этой пропс функции
Это копипаста из .propTypes = {...}
источник

I

Ilya in React Kyiv
Посмотри, там можно свои валидация писать
источник

I

Ilya in React Kyiv
Ilya Human
Немного не понял про валидацию пропсы ?
Тут же просто описании типов этой пропс функции
источник

IK

Ivan Kazadaev in React Kyiv
Будет ли норм, если это так сделать?


type validateFormNameType<T, U> = T extends 'onWatch' ? U : never;

interface IPasswordInputProps {
   onWatch?: () => void,
   formName: validateFormNameType<keyof IPasswordInputProps, string>
}
источник

IH

Ilya Human in React Kyiv
Ivan Kazadaev
Будет ли норм, если это так сделать?


type validateFormNameType<T, U> = T extends 'onWatch' ? U : never;

interface IPasswordInputProps {
   onWatch?: () => void,
   formName: validateFormNameType<keyof IPasswordInputProps, string>
}
Ты и правда можешь оставить кастомный проп тайп и добавить интерфейс для пропсов, просто PropTypes и Typescript решают немного разную задачу, PropTypes чекает типы в runtime, а Typescript в compile time
источник

I

Ilya in React Kyiv
Ivan Kazadaev
Будет ли норм, если это так сделать?


type validateFormNameType<T, U> = T extends 'onWatch' ? U : never;

interface IPasswordInputProps {
   onWatch?: () => void,
   formName: validateFormNameType<keyof IPasswordInputProps, string>
}
Глянь на юнион таймы ещё
источник

I

Ilya in React Kyiv
источник