#reactjs #react-hooks
#reactjs #реагирующие хуки
Вопрос:
Я уже некоторое время не работал с проектом, основанным исключительно на состоянии, это моя личная забава (мы используем Redux-подобный и постоянный на работе, поэтому доступ к глобальному состоянию намного больше зависит от prop). Я помещаю вложенные троичные файлы в setState hook ( setAvailableCharacters
) и я не фанат? Есть ли лучший способ, которым я мог бы это сделать?
function levelCharacterUp(forceLevel = false) {
setAvailableCharacters(prevState => (
merge({}, availableCharacters, {
[selectedClassKey]: {
level: forceLevel ? forceLevel : prevState[selectedClassKey].level 1 <= MAX_CHARACTER_LEVEL ? prevState[selectedClassKey].level 1 : MAX_CHARACTER_LEVEL
}
})
)
);
}
Не похоже, что есть более чистый способ сделать это, при этом соблюдая prevState
цепочку в новое состояние.
Попытка сохранить этот чисто функциональный компонент тоже.
Ответ №1:
Это может сработать:
function levelCharacterUp(forceLevel = false) {
setAvailableCharacters(prevState => (
merge({}, availableCharacters, {
[selectedClassKey]: {
level: forceLevel ? forceLevel : Math.min(prevState[selectedClassKey].level 1, MAX_CHARACTER_LEVEL)
}
})
)
);
}