canvas
(или даже просто накладывать маску поверх) покадрово так, чтобы каждый отдельно взятый кадр представлял собой "шум", однако при частоте 60+ кадров, основываясь на особенности человеческого зрения и мониторов(тут тебе потребуется углубиться в науку), сливался в читаемый нормальный контент.<input>
(или любой иной нативный компонент) - вот по идее так(в том же диапазоне допуска) должен стилизоваться и ваш. MutationObserver
. Однако более правильным решением является всё-таки встраивание в код, который собственно и добавляет новые элементы на страницу. mybooking_submit
¯\_(ツ)_/¯. если представить, что код фильтрации и вообще подготовки данных статистики придется писать на php.
$parent
: в прикладном коде использовать $parent обоснованно можно примерно никогда. С вероятностью стремящейся к 100% вы делаете что-то неправильно. Возможно вам нужно provide
\inject
, возможно достаточно будет стандартных props
и событий. $ref
: сделать реактивным $ref
не то чтобы совсем невозможно, но просто не нужно: реактивность $ref
будет означать только то, что вы будете отлавливать изменение ссылки на DOM объект, которого в обычном vue коде и так происходить не будет. Если же вы хотите ещё и отлавливать изменения свойств этого DOM объекта - то и это возможно, просто для каждого свойства придётся писать свой магический код детектирующий и триггерящий изменения, т.к. изначально никакого слежения в большинстве случаев предусмотрено не было. Собственно все современные фреймворки придуманы для того, чтобы заменить собой работу с DOM, потому если уж вы сами лезете в DOM в обход фреймворка - будьте любезны всё делать сами ручками. const Component = () => {
const useJustHere = () => {
useBrain()
}
useJustHere() // ~ok
return ...
}
const useJustHere = () => {
useBrain()
}
const Component = () => {
useJustHere() // ok
return ...
}
const Component = (props) => {
if(condition) {
useBrain(); // not ok
}
return ...
}
т.к. condition может поменяться, а хуки всегда дожны бть вызваны по порядку, а то реакт не поймёт где какой хук. const Component = (props) => {
useBrain(); // ok
const justHere = () => {
useBrain()
}
justHere() // ~ok
setTimeout((() => {
useBrain() // not ok
}, 1)
return <div onClick="justHere //not ok">...</div>
}
useSelector
. useSelector
снаружи и передавать в RegisterService
уже полученные параметры. Либо вытащить глобальный redux и брать значения из него без всяких хуков. use<some>
), а потому может вызываться когда хочешь.// отрисовка компонента внутри React
globalCurrentState = globalCurrentStateMap.get(Component);
globalCurrentStateIndex = 0
Component(...arguments)
globalCurrentState = null
globalCurrentStateIndex = null
// хук useState
function useState(stateValue) {
// увеличиваем индекс хука относительно компонента на единицу
globalCurrentStateIndex++;
// получаем массив state для текущего вызова useState
let stateArray = globalCurrentState[globalCurrentStateIndex];
if (stateArray) { // если уже есть - просто возвращаем
return stateArray;
} else { // иначе
// создаём setValue
function setValue(newValue) {
stateArray[0] = newValue;
}
// создаём массим state
stateArray = [stateValue, setValue];
// записываем в глобальную переменную
globalCurrentState[globalCurrentStateIndex] = stateArray;
// отдаём
return stateArray;
}
}
submitData
будет вызван - все глобальные переменные уже десять раз будут переопределены другими компонентами.use<some>
), то и сама функция становится хуком и не может работать вне корня компонента.
Собсно какой-то особый стор(pinia) в vue нужен только чтоб за ним следить из девтулз и особо работать в SSR. Иначе достаточно обычного reactive объекта.