Похоже, вы создаете свой объект directLine
в "MaximizeChatWndow ()", что, я думаю, является проблемой. В «MaximizeChatWndow ()» вы должны получить свой токен и передать его в компонент веб-чата. Именно в компоненте веб-чата вы должны использовать токен для вызова createDirectLine()
.
Похоже, что в 06.recomposing-us / a.minimizable-web- произошли различные обновления. чат образец. (Документы также выглядят как устаревшие и больше не соответствуют коду). Однако, если сравнивать с доступным примером кода, вам нужно сделать что-то вроде следующего. Пожалуйста, посмотрите полный код в приведенной выше ссылке, так как я включаю только самые важные части здесь.
Когда я тестировал, у меня не было проблем с сбросом разговора или отключением / повторным подключением сети.
MinimizableWebChat. js
import WebChat from './WebChat';
const MinimizableWebChat = () => {
[...]
const [token, setToken] = useState();
const handleFetchToken = useCallback(async () => {
if (!token) {
const res = await fetch('http://localhost:3500/directline/token', { method: 'POST' });
const { token } = await res.json();
setToken(token);
}
}, [setToken, token]);
[...]
return (
[...]
<WebChat
className="react-web-chat"
onFetchToken={handleFetchToken}
store={store}
styleSet={styleSet}
token={token}
/>
)
WebChat. js
const WebChat = ({ className, onFetchToken, store, token }) => {
const directLine = useMemo(() => createDirectLine({ token }), [token]);
[...]
useEffect(() => {
onFetchToken();
}, [onFetchToken]);
return token ? (
<ReactWebChat ...
);
};
Надежда на помощь!