繁体   English   中英

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

[英]Wrapping the app component with a context and getting the TypeError: (destructured parameter) is undefined

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

(如您所见,这是我的 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)未定义”也说这是因为UserContext中的孩子在我看来它应该'不会发生也许你可以帮助我找到我看不到的问题。

在此处输入图像描述

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

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

编辑:

也可以尝试:而不是

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

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

我发现了问题。 这是因为 useState。 它是未定义的,我在 UserContext 调用与 useState 相关的属性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM