Size: a a a

2020 August 19

VP

Vitalii Parshykov in Frontend UA
Привіт усім. Є питання до тих, хто працював з react-dnd. В мене є дві react-апки А і В. Апка А рендерить апку В, прокидуючи в неї умовний конфіг. Апка В генерує список полей форми на основі конфігу і наразі мені треба зробити можливість сортування цих полей.
Для цього у додатку А я створив компонент як в прикладі сортування. Він відрізняється тим, що рендер повертає null, а useEffect на маунт відправляє ref в батьківській компонент ( скрін )

І прокидую мапу ref, що створються в цих компонентах в додаток В.

Компоненти у додатку В реагують на драг, але не реагують ні на hover, ні на drop.
Не хочется переносити логіку для dnd усередину додатка В, тому намагаюсь  це робити в А.
Може хтось підскаже у чому саме може бути проблема і як ще можна таке подебажити, бо я трохи застряг.
Може я занадто знущаюсь над лібою?
Дякую!
источник

YT

Yurii Tryfonkov in Frontend UA
class UserService extends DomainModelService<User> {
   constructor(user: User) {
       super(user)
   }

   calc(): number {
       return 1 + 2
   }
}

class BaseController<T> {
   public service: DomainModelService<T>
   constructor(service: DomainModelService<T>) {
       this.service = service
   }
}

class UserController extends BaseController<User> {
   constructor(service: UserService) {
       super(service)
   }
}


const user = new User('Vasja')
const service = new UserService(user)
const controller = new UserController(service)

// service.calc() OK
// controller.service.calc() ERROR
Как сделать доступным calc() в контролере?
источник

EO

Eugene Obrezkov in Frontend UA
Yurii Tryfonkov
class UserService extends DomainModelService<User> {
   constructor(user: User) {
       super(user)
   }

   calc(): number {
       return 1 + 2
   }
}

class BaseController<T> {
   public service: DomainModelService<T>
   constructor(service: DomainModelService<T>) {
       this.service = service
   }
}

class UserController extends BaseController<User> {
   constructor(service: UserService) {
       super(service)
   }
}


const user = new User('Vasja')
const service = new UserService(user)
const controller = new UserController(service)

// service.calc() OK
// controller.service.calc() ERROR
Как сделать доступным calc() в контролере?
контроллер же не наследуется от юзер сервиса
отмена
источник

EO

Eugene Obrezkov in Frontend UA
Yurii Tryfonkov
class UserService extends DomainModelService<User> {
   constructor(user: User) {
       super(user)
   }

   calc(): number {
       return 1 + 2
   }
}

class BaseController<T> {
   public service: DomainModelService<T>
   constructor(service: DomainModelService<T>) {
       this.service = service
   }
}

class UserController extends BaseController<User> {
   constructor(service: UserService) {
       super(service)
   }
}


const user = new User('Vasja')
const service = new UserService(user)
const controller = new UserController(service)

// service.calc() OK
// controller.service.calc() ERROR
Как сделать доступным calc() в контролере?
кинь на плейграунд, с виду не видно что не так
источник

YT

Yurii Tryfonkov in Frontend UA
Eugene Obrezkov
кинь на плейграунд, с виду не видно что не так
источник

YT

Yurii Tryfonkov in Frontend UA
Базовый контролер возвращает DomainModelService, и все его методы доступны, но DomainModelService для каждой сущности может иметь свои методы.
источник

EO

Eugene Obrezkov in Frontend UA
DomainModelService ничего не знает о том, что у него должен быть какой-то calc(), поэтому и говорит что там его нету
источник

EO

Eugene Obrezkov in Frontend UA
ты говоришь что у тебя сервис может быть что угодно, что реализует контракт Х, но в этом контракте нету нигде про calc(), это уже одна из реализаций
в других его и вовсе может не быть
источник

RV

Roman V in Frontend UA
Yurii Tryfonkov
class UserService extends DomainModelService<User> {
   constructor(user: User) {
       super(user)
   }

   calc(): number {
       return 1 + 2
   }
}

class BaseController<T> {
   public service: DomainModelService<T>
   constructor(service: DomainModelService<T>) {
       this.service = service
   }
}

class UserController extends BaseController<User> {
   constructor(service: UserService) {
       super(service)
   }
}


const user = new User('Vasja')
const service = new UserService(user)
const controller = new UserController(service)

// service.calc() OK
// controller.service.calc() ERROR
Как сделать доступным calc() в контролере?
Можно попробовать
class BaseController<T extends DomainModelService<any>> {
   public service: T
   constructor(service: T) {
       this.service = service
   }
}
источник

IT

Ivan Tytarenko in Frontend UA
вопрос не про фронтенд - как я могу увеличить размер текста на 4к дисплее в макбуке?
источник

IT

Ivan Tytarenko in Frontend UA
не меняя разрешение экрана
источник

Дп

Джон простоДжон... in Frontend UA
system preferences > displays > larger text
источник

EO

Eugene Obrezkov in Frontend UA
Джон простоДжон
system preferences > displays > larger text
это меняет разрешение
источник

RV

Roman V in Frontend UA
Eugene Obrezkov
это меняет разрешение
Точно? У меня вроде нет, только масштаб
источник

EO

Eugene Obrezkov in Frontend UA
Roman V
Точно? У меня вроде нет, только масштаб
источник

EO

Eugene Obrezkov in Frontend UA
источник

EO

Eugene Obrezkov in Frontend UA
то что вы называете «масштаб» - это как раз меняется разрешение)
источник

IT

Ivan Tytarenko in Frontend UA
Джон простоДжон
system preferences > displays > larger text
это если ретина
источник

IT

Ivan Tytarenko in Frontend UA
а тут 4к
источник

IT

Ivan Tytarenko in Frontend UA
не Ретина
источник