, поэтому в этом случае проще просто обернуть функцию в useCallback
, перечислив там все ее зависимости:
const dfEventQuery = useCallback(async (event: string) => {
const {
data: { result }
} = await axios.post("/api/df_event_query", { event, userId });
for (let msg of result.fulfillmentMessages) {
const botSay: MessageDataType = { speaks: "bot", msg };
setMessages(oldMessages => [...oldMessages, botSay]);
}
}, [userId]);
и перечислив ее в зависимости useEffect
.
Но честно говоря, я ожидаю, что Эслинт не будет жаловаться на отсутствующую зависимость, поскольку в вашем коде она будет воссоздана в соответствующем цикле рендеринга, и проблема «устаревшего закрытия» в любом случае не возникнет.
[UPD] найти аналогичный случай в потоке https://github.com/facebook/react/issues/14920#issuecomment -467212561 , но не вижу комментариев ни в том случае, если это ожидается (и почему), либо если * git имеет такой функция вне использования useEffect.