我目前正试图实现一个密码可见性按钮内我的登录形式。然而,由于微软边缘已经有自己的内置一个,我想只呈现按钮,如果用户不是边缘。由于某些原因,我看不到,按钮仍然呈现边缘。我已经尝试了所有我能想到的方法来实现这一点,似乎没有任何工作。任何反馈都很感激
import { useState } from 'react';
import {
Tabs,
Tab,
Box,
Button,
TextField,
Snackbar,
IconButton,
} from '@mui/material';
import { Visibility, VisibilityOff } from '@mui/icons-material';
import useAuthContext from '../auth/useAuthContext';
import '../styles.css';
import config from '../config/index';
function LoginForm() {
const [email, setEmail] = useState('');
const [password, setPassword] = useState('');
const [name, setName] = useState('');
const [cpass, setCpass] = useState(''); // state for confirm password
const [showPassword, setShowPassword] = useState(false); // new state variable
const {
user, login, signing, forgotPwd, changePwd, error, confirmsignupp, resendSignUp,
} = useAuthContext();
const [tabIndex, setTabIndex] = useState(0); // this is for tab index to switch from login to signup
const [stage, setStage] = useState(1); // used for password recovery form 1=email stage 2=code stage
const [code, setCode] = useState('');
const [upstage, setUpstage] = useState(1); // USED FOR SIGNUP VERIFICATION 1 FOR EMAIL PWD 2 FOR CODE
const [signupcode, setSignupcode] = useState('');
const handleTabChange = (event, newTabIndex) => {
// it will change the index of tab to switch from login to signup
setTabIndex(newTabIndex);
};
const handleSubmit = async (event) => {
event.preventDefault();
login(email, password);
};
const handleresendsignup = async (event) => {
event.preventDefault();
resendSignUp(email);
};
const handleSubmitsignup = async (event) => {
event.preventDefault();
signing(email, password);
setUpstage(2);
};
const handleconfirmsignup = async (event) => {
event.preventDefault();
confirmsignupp(email, signupcode);
};
const sendCode = async (event) => {
event.preventDefault();
setStage(2);
forgotPwd(email);
};
const resetPassword = async (event) => {
event.preventDefault();
changePwd(email, code, password)
.then((data) => console.log(data))
.catch((err) => console.log(err));
};
const signupshow = config.enableSelfSignup;
const handleShowPassword = () => {
setShowPassword(!showPassword);
};
const isEdgeBrowser = navigator.userAgent.indexOf('Edge') > -1;
return (
<div style={{ height: '100vh' }}>
<Box
display='flex'
flexDirection='column'
maxWidth={800}
alignItems='center'
justifyContent='center'
margin='auto' // to make it to the center from left and right
marginTop={5}
padding={3}
borderRadius={5}
boxShadow='5px 5px 10px #ccc'
sx={{
':hover': {
boxShadow: '10px 10px 20px #ccc',
},
// backgroundColor: 'blue' ,
height: '800px',
}} // SX IS USED TO ADD CUSTOM CSS
>
<Snackbar
open={!!error}
autoHideDuration={5000}
message={error}
anchorOrigin={{ vertical: 'top', horizontal: 'center' }}
/>
{/* here i have created tabs to switch between each other */}
{/* https://codingbeautydev.com/blog/material-ui-tabs/ */}
<Tabs value={tabIndex} onChange={handleTabChange}>
<Tab label='Login' />
{signupshow ? <Tab label='Signup' /> : null}
<Tab label='Forget password?' />
</Tabs>
{tabIndex === 0 && ( // tab for login begin here
<Box>
<h1 style={{ fontSize: 50 }}>
{user ? `User: ${user.attributes.email}` : 'Sign In'}
</h1>
<form onSubmit={handleSubmit}>
<TextField
fullWidth
sx={{ py: 1 }}
margin='normal'
variant='outlined' // WHEN WE HOOVER THERE IS OUTLINE ON BOX
// size='small'
label='Email'
value={email}
autoComplete='username'
onChange={(e) => setEmail(e.target.value)}
/>
<TextField
fullWidth
sx={{ py: 1 }}
margin='normal'
variant='outlined'
// size='small'
label='Password'
type={showPassword ? 'text' : 'password'}
value={password}
autoComplete='current-password'
onChange={(e) => setPassword(e.target.value)}
InputProps={{
endAdornment: (
(!isEdgeBrowser && (
<IconButton onClick={handleShowPassword}>
{showPassword ? <VisibilityOff /> : <Visibility />}
</IconButton>
))
),
}}
/>
{/* <input type='submit' value='Login'/> */}
<Button
type='submit'
variant='contained'
sx={{ mt: 3, mb: 2, borderRadius: 3 }}
>
Login
</Button>
</form>
</Box>
)}
1条答案
按热度按时间mlnl4t2r1#
您正在通过以下方式检测用户代理
如果我尝试在我的边缘中获取用户代理,我将得到以下结果
这意味着只有
Edg
在用户代理中,您可能希望通过以下代码找到用户代理。你想看看the latest user agents for edge