I have some side effect logic in multiple components wrapped in useEffect
, where the logic is exactly the same except taking in different parameters, so I decided to take the logic out and move it into a function factory to supply to useEffect
so not to repeat the logic everywhere. But once that is done, React is complaining "React Hook useEffect received a function whose dependencies are unknown. Pass an inline function instead". How do you get rid of it the proper way if not suppressing the warning?
e.g.
function ComponentA(props) {
useEffect(() => {
doThis(props.member);
doThat(props.member);
}, [props.member]);
}
function ComponentB(props) {
useEffect(() => {
doThis(props.member);
doThat(props.member);
}, [props.member]);
}
changed to
function ComponentA(props) {
useEffect(logic(props.member), [props.member]);
}
function ComponentB(props) {
useEffect(logic(props.member), [props.member]);
}
function logic(member) {
return () => {
doThis(member);
doThat(member);
};
}
Change useEffect to
useEffect(() => {
logic(props.member);
}, [props.member]);
and change logic to
function logic(member) {
doThis(member);
doThat(member);
}