React Native Context setUser 不是函数

React Native Context setUser is not a function

我正在尝试使用 React Context 来管理用户是否登录。到目前为止我所拥有的是这样的:

import AuthUserContext, { AuthUserProvider } from './Components/auth/AuthUserProvider';

function App() {
  const {user, setUser} = React.useContext(AuthUserContext)
  setUser('') // SetUser is not a function
}

App.tsx

import React, { useState, createContext } from 'react';
var user: any, setUser: any;

const AuthUserContext = React.createContext({user, setUser});
export default AuthUserContext;

export const AuthUserProvider = ({ children } : {children: any}) => {
  const [user, setUser] = useState(null);
  
  return (
    <AuthUserContext.Provider value={{ user, setUser }}>
      {children}
    </AuthUserContext.Provider>
  );
};

AuthUserProvider.tsx

这是错误:

TypeError: setUser is not a function. (In 'setUser('')', 'setUser' is undefined)

This error is located at:
    in App (created by ExpoRoot)
    in ExpoRoot (at renderApplication.js:45)
    in RCTView (at View.js:34)
    in View (at AppContainer.js:106)
    in DevAppContainer (at AppContainer.js:121)
    in RCTView (at View.js:34)
    in View (at AppContainer.js:132)

我是 React Native 的新手,几个小时以来一直在努力解决这个问题。任何帮助表示赞赏。非常感谢!

问题

您的上下文的初始值似乎未定义。

var user: any, setUser: any;

const AuthUserContext = React.createContext({ user, setUser }); // both undefined

解决方案

定义上下文的形状。

var user: any, setUser: any;

const AuthUserContext = React.createContext({
  user: '',
  setUser: () => {}, // <-- indicate setUser is a function
});

Updating Context from a Nested Component