Итак, у меня есть приведенный ниже код, который я хотел бы реорганизовать, поэтому мне не придется повторять его снова и снова. Я сделал функцию 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],
);