React集成Firebase认证报错:Right side of assignment cannot be restructured
问题原因及解决方法
报错"Right side of assignment cannot be restructured"的核心原因是:你的<App>组件没有被AuthProvider包裹,导致useAuth()返回的是AuthContext的默认值undefined,对undefined进行对象解构const {login} = useAuth()就会触发这个错误。
解决步骤
修改Index.js文件,将<App>组件包裹在AuthProvider中:
import ReactDOM from 'react-dom/client'; import { BrowserRouter } from 'react-router-dom'; import App from './App'; import { AuthProvider } from './contexts/AuthContext'; // 导入AuthProvider ReactDOM.render( <React.StrictMode> <BrowserRouter> <AuthProvider> {/* 新增包裹层 */} <App /> </AuthProvider> </BrowserRouter> </React.StrictMode>, document.getElementById('root'), );
原理说明
AuthContext.Provider的作用是向所有子组件共享上下文数据,只有当Login组件处于AuthProvider的包裹范围内时,useAuth()才能正确获取到你在AuthProvider中定义的包含login方法的value对象,此时解构{login}才是合法操作。
内容的提问来源于stack exchange,提问作者Tom
相关产品推荐
相关产品推荐

