์์ ๊ฐ์ด ๊ธ์ ์ ์ ํ input ๋ง์ด ๋ณด์ จ์ ๊ฑฐ์์!!!
๋ํ, ๋น๋ฐ๋ฒํธ์ ๊ฐ์ด ๋ณด์๋ฌธ์ ๋ฅผ ์ํด ์ ๋ ฅ๊ฐ์ด ์ ๋ณด์ด๋๋ก ํ๋ input๋ ๋ง์ด ๋ณด์ จ์ ๊ฑฐ์์!!!
๊ตฌํํด๋ด ์๋ค.
00. ๊ธ์ ์ ์ ํ
import { TextField } from "@material-ui/core";
/** ๋๋ค์ ์ต๋ ๊ธธ์ด */
const NICKNAME_LIMIT = 20;
/** ๋๋ค์ ์
๋ ฅ๊ฐ */
const [values, setValues] = React.useState({
nickName: ""
});
const handleChange = (nickName) => (event) => {
setValues({ ...values, [nickName]: event.target.value });
};
...
<TextField
label="Nickname"
inputProps={{
maxlength: NICKNAME_LIMIT
}}
value={values.name}
helperText={`${values.nickName.length}/${NICKNAME_LIMIT}`}
onChange={handleChange("nickName")}
variant="outlined"
/>
TextField๋ฅผ ์ด์ฉํฉ๋๋ค!
๊ธ์ ์ ์ ํ์ inputProps์ maxlength์ intํ์ผ๋ก ์ธ์๋ฅผ ๋ณด๋ ๋๋ค.
ํนํ, ์ต๋ ๋ช ๊ธ์์ธ์ง ๊ทธ๋ฆฌ๊ณ ํ์ฌ ๋ช ๊ธ์ ์์ฑํ๋์ง ์ ์ ์๋๋ก helperText๋ก ๊ตฌํํ์ฌ ์ธ์๋ฅผ ๋ณด๋ ๋๋ค.
01. ๋น๋ฐ๋ฒํธ
<TextField
...
label="Password"
type="password"
...
/>
๊ฐ๋จํ๊ฒ!!!!!!!!
type="password"๋ง ์ธ์๋ก ๋ณด๋ด์ฃผ๋ฉด ๋์ ๋๋ค!
์ด์ , ๋ณธ์ธ ์ทจํฅ์ ๋ง๊ฒ ์ค๋ฅธ์ชฝ ๋์ ๋ ์์ด์ฝ์ผ๋ก ๋ณด์๋ค ์ ๋ณด์๋ค ํ ์ ์๊ฒ ์๋์ ๊ฐ์ด ๊ตฌํ๋ ๊ฐ๋ฅํ๊ฒ ์ฃ ??!!
if(๋ ์์ด์ฝ ํ์ฑํ ๋์ด์๋ค๋ฉด) type="password"
else (์๋๋ผ๋ฉด) type="text"
โจโจโจโจ