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>
), то и сама функция становится хуком и не может работать вне корня компонента. Object.create(null)
). Например вместо newObject.hasOwnProperty('name')
рекомендуется Object.hasOwn(newObject, 'name')
. prefix: false\'_'\<что угодно но не use>
в конфиге модуля. div.innerHTML = ...;
добавь: div.querySelectorAll('script').forEach((sourceScript) => {
const script = document.createElement('script');
for(const attribute of sourceScript.attributes)
script.attributes.setNamedItem(attribute.cloneNode(true));
script.innerHTML = sourceScript.innerHTML;
sourceScript.parentNode.replaceChild(script, sourceScript);
})
Тут, по сути, ты просто создаёшь хук на ходу и тут же используешь:
Практически то же самое что:
Разве что этот "хук" каждый рендер пересоздаётся, что может привести к куче непредвиденных(или предвиденных, если знаешь что делаешь) особенностей.
Vladislav Ivanov, ещё важно помнить:
т.к. condition может поменяться, а хуки всегда дожны бть вызваны по порядку, а то реакт не поймёт где какой хук.