【发布时间】:2022-12-12 13:21:22
【问题描述】:
所以我正在创建一个带有 Material-ui 和 firebase 身份验证的应用程序,我想在 MUI 对话框中包含 firebaseui 的身份验证。
要添加身份验证组件,firebase ui 需要访问带有 "firebaseui-auth-container" id 的元素,在我的例子中,它位于 Dialog 组件的内容中。但是,在关闭时,不会呈现对话框的内容,因此 firebase 无法附加 auth 的 ui 组件。
有没有办法在对话框中附加身份验证 UI?也许对话框的组件呈现但隐藏了?
当前代码:
// index.js
import React from 'react';
import ReactDOM from 'react-dom/client';
import './index.scss';
import 'firebaseui/dist/firebaseui.css';
import App from './App';
import reportWebVitals from './reportWebVitals';
import { createTheme, ThemeProvider } from '@mui/material';
import { StyledEngineProvider } from '@mui/material/styles';
import { auth as firebaseUIAuth } from 'firebaseui';
import { initializeApp } from 'firebase/app';
import { getAuth, EmailAuthProvider, GoogleAuthProvider } from 'firebase/auth';
import { getAnalytics } from 'firebase/analytics';
const firebaseConfig = {
...
};
const app = initializeApp(firebaseConfig);
const analytics = getAnalytics(app);
const auth = getAuth();
const ui = new firebaseUIAuth.AuthUI(auth);
var uiConfig = {
...
};
ui.start('#firebaseui-auth-container', uiConfig);
const theme = createTheme({ ... })
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
<React.StrictMode>
<StyledEngineProvider injectFirst>
<ThemeProvider theme={theme}>
<App />
</ThemeProvider>
</StyledEngineProvider>
</React.StrictMode>
);
reportWebVitals();
/* App.js */
import React from 'react';
import Dialog from '@mui/material/Dialog';
import IconButton from '@mui/material/IconButton';
import PersonIcon from '@mui/icons-material/Person';
function App() {
const [dialogOpen, toggleDialog] = React.useState(false);
return (
<div className="App" id="App">
<div className='App-home'>
<IconButton
aria-label="profile"
className='App-button_profile'
onClick={() => toggleDialog(true)}
>
<PersonIcon className="big-icon" />
</IconButton>
<Dialog open={dialogOpen} onClose={() => toggleDialog(false)}>
<div id="firebaseui-auth-container"></div>
</Dialog>
</div>
</div>
);
}
export default App;
非常感谢
【问题讨论】:
标签: javascript reactjs firebase material-ui firebaseui