Итак, у меня есть приведенный ниже код, который я хотел бы реорганизовать, поэтому мне не придется повторять его снова и снова. Я сделал функцию saveQuestion
, но она решает половину проблемы. Мне не нужно звонить setDeleteFilters(true);
setFiltersAreApplied(true);
снова ... Но есть ли способ вызывать функцию saveQuestion каждый раз с другим хуком, как один раз с setAlfaIsTrue(newValue);
, затем с setBetaIsTrue(newValue);
и т. Д.?
Спасибо :)
const saveQuestion = useCallback(
() => {
setDeleteFilters(true);
setFiltersAreApplied(true);
},
[ deleteFilters, filtersAreApplied ]
);
const saveAlfa = useCallback(
(newValue) => {
setAlfaIsTrue(newValue);
saveQuestion();
// setDeleteFilters(true);
// setFiltersAreApplied(true);
},
[ alfaIsTrue ]
);
const saveBeta = useCallback(
(newValue) => {
setBetaIsTrue(newValue);
saveQuestion();
// setDeleteFilters(true);
// setFiltersAreApplied(true);
},
[ betaIsTrue ]
);
0
Fotis Tsakiris
1 ответ
Этот пользовательский хук сделает свое дело
const useSaveQuestion = (saveFunc, deps) =>
useCallback(
newValue => {
saveFunc(newValue);
setDeleteFilters(true);
setFiltersAreApplied(true);
},
[deleteFilters, filtersAreApplied, ...deps],
);
И вот как вы используете это:
const saveAlfa = useSaveQuestion(
newValue => {
setAlfaIsTrue(newValue);
saveQuestion();
},
[alfaIsTrue],
);
const saveBeta = useSaveQuestion(
newValue => {
setBetaIsTrue(newValue);
saveQuestion();
},
[betaIsTrue],
);
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript / JS) и его различных диалектах / реализациях (кроме ActionScript). Включите все соответствующие теги в свой вопрос; например, [node.js], [jquery], [json] и т. д.