在 typescript 中React上下文

olhwl3o2  于 2023-01-21  发布在  TypeScript
关注(0)|答案(1)|浏览(154)

我正在创建上下文来处理typescript应用程序中的身份验证。

/*-- Imports --*/

/*--  AuthContextType interface and defaults -- */

const AuthContext = createContext<AuthContextType>(contextDefaults);

export const useAuth = () => {
  return useContext(AuthContext);
};

interface AuthProviderProps {
  children: ReactNode;
}

const AuthProvider = ({ children }: AuthProviderProps) => {
  const [user, setUser] = useState<User | null>(null);

  const isLoggedIn = !!user;

  const login = (data: User) => {
    setUser(data);
  };

  const logout = () => {
    setUser(null);
  };

  return (
    <AuthContextType.Provider value={{ user, isLoggedIn, login, logout }}>
      {children}
    </AuthContextType.Provider>
  );
};

export default AuthProvider;

然后我用这个AuthProvider Package App;

/* --- imports ---*/

const App = () => {
  return (
      <AuthProvider>
        <div>App</div>
      </AuthProvider>
  );
};

export default App;

这段代码给出了错误,当我在JavaScript应用程序中编写相同的代码时,它工作正常。
AuthContext.ts错误

错误

任何帮助都将不胜感激。
谢谢

djmepvbi

djmepvbi1#

是否您使用过:你什么意思?
AuthContextType是类型脚本类型,而不是响应上下文对象。

const AuthProvider = ({ children }: AuthProviderProps) => {
  .... 
  return (
    <AuthContext.Provider value={{ user, isLoggedIn, login, logout }}>
      {children}
    </AuthContext.Provider>
  );
};

这个管用吗?

相关问题