React/Redux useEffect with dispatch 触发多次

React/Redux useEffect with dispatch fired multiple times

我在使用 useEffect() 和 dispatch() 操作时遇到问题。我正在使用最新版本的 React“^18.1.0”。基本上,我在一个简单的文件中定义了以下代码。

const Item = () => {

    const dispatch = useDispatch()
    const user = useSelector(state => state.authReducer.user)

    useEffect(() => {
        dispatch(fetchItems()).then(res => console.log(res)).catch(err => console.log(err))
    }, [dispatch])

    return (
        <div id='data-container'>
            <Navbar />
            <div id='data-wrap'>
                Data
            </div>
        </div>
    );
}

export default Item 

fetchItems() 是一个简单的函数,它从 API 获取一些数据。

问题是动作被分派了两次,但我希望动作只分派一次。

任何帮助的人将不胜感激。

谢谢。

如果您将 useEffect 与空数组一起使用,您将只在呈现组件时调用一次。

    useEffect(() => {
        dispatch(fetchItems()).then(res => console.log(res)).catch(err => console.log(err))
    }, [])

在开发模式下 运行 React 是正常的。 (React 检查是否一切正常)。

尝试构建生产版本,它应该运行正常。

此外,在依赖项数组中进行分派也是正确的,因为它永远不会更改其引用。