gpt4 book ai didi

javascript - 使用上下文包装应用程序组件并获取 TypeError : (destructured parameter) is undefined

转载 作者:行者123 更新时间:2023-12-05 06:49:49 26 4
gpt4 key购买 nike

我试图将应用程序下的所有组件包装在一个上下文中以提供我想要的东西

(如您所见,这是我的 UserContext 组件)

enter code here

import React, { useState, createContext, useContext } from 'react'

const Context = createContext();
export let useUserContext = () => useContext(Context);

export default function UsersContext({ children }) {
const [users, setUsers] = useState();

const createUser = (user) => {
if (!user.name || !user.email || !user.password) return;
const newUsers = [...users, user];
setUsers(newUsers);
}

return (
<Context.Provider value={{ users, createUser }}>


{children}
</Context.Provider>
)
}

(这是我的应用组件)

enter code here
import Nav from "./components/nav/Nav";
import Container from "./components/container/Container";
import { BrowserRouter } from "react-router-dom";

import UsersContext from "./components/contexts/UserContext";


function App() {

return (
<UsersContext>
<BrowserRouter>
<Nav />
<Container />
</BrowserRouter>
</UsersContext>
);
}

export default App;

以前在我的项目中是这样的,我没有任何问题,但是现在我得到的错误“TypeError: (destructured parameter) is undefined”也说这是因为 UserContext 中的 child 在我看来不应该发生也许你可以帮我找到我看不到的问题。

enter image description here

最佳答案

尝试:<Context.Provider value={[ users, { createUser } ]}>

而不是:<Context.Provider value={{ users, createUser }}>

编辑:

也可以尝试:而不是

    const newUsers = [...users, user];
setUsers(newUsers);

    setUsers((currentUsers) => [...currentUsers, user]);

关于javascript - 使用上下文包装应用程序组件并获取 TypeError : (destructured parameter) is undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66508886/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com