这是 React 中的有效语法吗?

Is this valid syntax in React?

我正在做一个 React 项目,在安装组件后我必须在其中初始化一个套接字。为此,我正在使用这种语法,我想知道它是否有效。

function Component() {
    const socket = useMemo(() => {
        return io('http://localhost:3001')
    },[socket]);

    return (
        <h1>Component</h1>
    )
}

这样,我的项目和套接字工作得很好,但我想知道实现相同目的的传统方法。我在另一个 React 项目中使用了相同的语法,它给了我 socket 变量的“引用错误”。

您需要向 useMemo 添加一个依赖数组,否则它会在每次渲染时触发。在那之后,是的,这是一个有效的语法 :)

const socket = useMemo(() => {
    return io('http://localhost:3001')
}, [])