Если вы используете triggerData
только внутри ловушки, тогда я предпочту объявить функцию внутри ловушки useEffect
. Как:
useEffect(()=>{
//api call
const triggerData = (values) => {
return values + 1;
}
if(something){
triggerData(values);
}
}, [values]);
Вы что-то упустили. Мы объявляем triggerData
внутри хука и также передаем его useEffect
, поэтому он жалуется на уже объявленную функцию.
Если вы действительно хотите объявить triggerData
за пределами useEffect
, чтобы использовать его где-то еще, вы можете сделать это так:
useEffect(()=>{
//api call
if(something){
triggerData(state, props);
}
}, [values, triggerData]);
const triggerData = useCallback((state, props) => {
return values + 1;
}, [state, props]);
const buildData = () => {
triggerData(state, props);
}
При использовании useCallback
предоставьте точные параметры чтобы его вызывали минимально согласно сценарию. Допустим, вы получаете доступ к value
из состояния в triggerData
. Тогда вы можете передать state.value
вместо целого state
.
Надеюсь, это сработает для вас.