ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • react - valid
    React 2022. 10. 3. 23:31

    電話番号を入力するフォーム。

    電話番号は”0”から始めないとエラーと判断し、入力さえできない仕様。

     

     

    全体コード

          const App = () => {
            const [message, setMessage] = React.useState("");
            const [phoneNumber, setPhoneNumber] = React.useState("");
    
            const handleSubmit = (event) => {
              event.preventDefault();
              alert(phoneNumber);
            };
    
            const handleChange = (event) => {
              // setPhoneNumber(event.target.value);
              //if (phoneNumber.startsWith(0)) { 
              if (event.target.value.startsWith(0)) {
                setMessage("Phone Number is valid");
                setPhoneNumber(event.target.value);
              } else if (event.target.value.length === 0) {
                setPhoneNumber("");
                setMessage("");
              } else {
                setPhoneNumber("");
                setMessage("Phone Number should starts with 0");
              }
            };
            // controlled - inputのvalueを直接管理すること
            return (
              <form onSubmit={handleSubmit}>
                <label htmlFor="phone">Phone Number:</label>
                <br />
                <input
                  id="phone"
                  name="phone"
                  onChange={handleChange}
                  value={phoneNumber}
                />
                <p>{message}</p>
                <br />
                <button
                  type="submit"
                  disabled={
                    phoneNumber.length === 0 || message != "Phone Number is valid"
                  }
                >
                  Submit
                </button>
              </form>
            );
          };

     

     

    入力都度、handleChangeでvalidチェックを実施。

    inputのvalueではphoneNumberというstateを直接設定することにより、inputのvalueを直接管理する。(controlledという。)

    buttonでは、間違った電話番号ならsubmitできなくする。

            return (
              <form onSubmit={handleSubmit}>
                <label htmlFor="phone">Phone Number:</label>
                <br />
                <input
                  id="phone"
                  name="phone"
                  onChange={handleChange}
                  value={phoneNumber}
                />
                <p>{message}</p>
                <br />
                <button
                  type="submit"
                  disabled={
                    phoneNumber.length === 0 || message != "Phone Number is valid"
                  }
                >
                  Submit
                </button>
              </form>
            );

     

    inputに入力した電話番号のvalidチェックを実施する。

    setPhoneNumberをif文前に記述してその次にphoneNumberを参照したが、これだとシンクが取れなくなるのでsetした後stateをすぐ参照するのは良くない!

            const handleChange = (event) => {
              // setPhoneNumber(event.target.value);
              //if (phoneNumber.startsWith(0)) { 
              if (event.target.value.startsWith(0)) {
                setMessage("Phone Number is valid");
                setPhoneNumber(event.target.value);
              } else if (event.target.value.length === 0) {
                setPhoneNumber("");
                setMessage("");
              } else {
                setPhoneNumber("");
                setMessage("Phone Number should starts with 0");
              }
            };

    'React' 카테고리의 다른 글

    react - key!!!  (0) 2022.11.26
    Error Handling  (0) 2022.10.23
    form - console.dir(target)  (0) 2022.09.28
    useRef()  (0) 2022.09.20
    useEffect - cleanup  (0) 2022.09.20

    댓글

Designed by Tistory.