mongodb 警告:来自useState()和useReducer()挂钩的状态更新不支持“+ ... MERN堆栈应用程序

5lhxktic  于 2022-12-22  发布在  Go
关注(0)|答案(2)|浏览(254)

为什么我的setUser在我使用console.log时返回该警告?:

function dispatchAction(fiber, queue, action) {
  {
    if (typeof arguments[3] === 'function') {
      error("State updates from the useState() and useReducer() Hooks don't support the " + 'second callback argument. To execute a side effect after ' + 'rendering, declare it in the component body with useEffect().');
    }
  }

函数如下:

const UserContextProvider = (props) => {
    const [user, setUser] = useState({})
    
    useEffect(() => {
        fetch(`${API}/auth/user`, {
            method: 'GET',
            withCredentials: true,
            credentials: 'include'
        })
        .then (response => response.json())
        .then (response => {
            setUser(response.user)
            console.log(setUser)
        })
        .catch (error => {
            console.error (error);
        });
    }, [setUser])

注意:response.user只是一个对象,我可以访问user中的数据,而在子组件中没有问题。

uqjltbpv

uqjltbpv1#

我也有这个问题在我的例子中,这是因为我没有在子组件中声明所有传递的上下文。例如,在我的提供程序中,我有:

<Outlet context={[user, setUser, filter, setFilter]} />

但我只是在子组件中声明了内容状态:

const [user, filter] = useOutletContext();

因此,它认为filter状态是user的setter,我将其更改为包含所有传递的上下文:

const [user, setUser, filter, setFilter] = useOutletContext();

而且效果很好。

cigdeys3

cigdeys32#

您是否希望从useState查看clg打印用户中的API数据?
常量用户上下文提供程序=(属性)=〉{常量[用户,设置用户] =使用状态({})

useEffect(() => {
    fetch(`${API}/auth/user`, {
        method: 'GET',
        withCredentials: true,
        credentials: 'include'
    })
    .then (response => response.json())
    .then (response => {
        setUser(response.user)
        console.log(user)
    })
    .catch (error => {
        console.error (error);
    });
}, [setUser])

相关问题