【发布时间】:2022-01-22 06:06:54
【问题描述】:
我正在使用 Google Speech-To-Text API 使用用户的语音回答我的网页问题。在这种情况下,我已经正确创建了所有 Node JS 服务器端功能,当我启动 API 时,服务器使用 webSockets 不断地向客户端发送语音文本。我的问题出在 React JS client.js 文件上。当收到服务器发给客户端的语音文本时,useEffect不是刷新 #text-field(input tag) 的网络浏览器。
client.js 文件
import io from 'socket.io-client';
import React from 'react';
import ReactDOM from 'react-dom';
import { useEffect, useState } from 'react';
const socket = io('http://localhost:3000', {
transports: ['websocket', 'polling']
});
const App = ({}) => {
const [data, setData] = useState([]);
useEffect(() => {
socket.on('speech', textOfSpeech => {
setData(currentData => [...currentData, textOfSpeech ]);
});
}, []);
return (
<div>
<h1>Message</h1>
<input id="text-field" type="text" value={data.join('')}/>
</div>
);
};
ReactDOM.render(<App />, document.getElementById('root')); ```
当我刷新网页时,所有语音文本显示在#text-field中,不刷新网页我无法获取语音文本.请帮我在不刷新网页的情况下更新#text-field。
【问题讨论】:
标签: javascript reactjs websocket use-effect page-refresh