강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

HyunJu Park님의 프로필 이미지
HyunJu Park

작성한 질문수

[리뉴얼] React로 NodeBird SNS 만들기

로그인인풋창에서 한글자적고나면 커서가 사라져요 ㅠ

해결된 질문

작성

·

253

0

id, password 인풋창에서 한글자적고나면 커서가사라져서 다시 클릭해줘야하는데..

뭐가 문제인지 모르겠어요 ㅠ 

질문이 허술해서 죄송해요 

답변 6

1

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

아 ButtonWapper와 FormWrapper를 LoginForm 위에 선언해주세요. 컴포넌트 안에 말고요.

1

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

컴포넌트가 리렌더링돼서 커서가 풀리는 겁니다. 로그인폼은 문제없는것같은데 useInput.js도 보여주세요.

1

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

혹시 input 태그에 key가 들어있나요? key 속성을 제거해보세요

0

HyunJu Park님의 프로필 이미지
HyunJu Park
질문자

제로초님 됐으요~~~~ㅠㅠ 감사합니다!!

0

HyunJu Park님의 프로필 이미지
HyunJu Park
질문자

감사합니다 useInput 예요

import { useState, useCallback } from 'react';

export default (initialValue = null) => {
  const [value, setValue] = useState(initialValue);
  const handler = useCallback((e) => {
    setValue(e.target.value);
  }, []);
  return [value, handler, setValue];
};

0

HyunJu Park님의 프로필 이미지
HyunJu Park
질문자

빠른 답변감사합니다!

key 속성은 안들어가있는데 

이게 전체 코드인데 뭔가 잘못된부분이 있을까요,,??

import React, { useCallback } from 'react';
import { useDispatch } from 'react-redux';
import { loginRequestAction } from '../reducers/user';
import styled from 'styled-components';
import { Form, Input, Button } from 'antd';
import Link from 'next/link';
import useInput from '../hooks/useInput';

const LoginForm = () => {
  const dispatch = useDispatch();
  const [id, onChangeId] = useInput('');
  const [password, onChangePassWord] = useInput('');
  // 스타일드 컴포넌트
  const ButtonWrapper = styled.div`
    margin-top10px;
  `;
  const FormWrapper = styled(Form)`
    padding10px;
  `;

  const onsubmitForm = useCallback(() => {
    dispatch(loginRequestAction({ id, password }));
  }, [id, password]);

  return (
    <FormWrapper onFinish={onsubmitForm}>
      <div>
        <label htmlFor="user-id">아이디</label>
        <br />
        <Input name="user-id" value={id} onChange={onChangeId} required />
      </div>
      <div>
        <label htmlFor="user-password">비밀번호</label>
        <br />
        <Input
          name="user-password"
          type="password"
          value={password}
          onChange={onChangePassWord}
          required
        />
      </div>
      <ButtonWrapper>
        <Button type="primary" htmlType="submit" loading={false}>
          로그인
        </Button>
        <Link href="/signup">
          <a>
            <Button>회원가입</Button>
          </a>
        </Link>
      </ButtonWrapper>
    </FormWrapper>
  );
};

export default LoginForm;
HyunJu Park님의 프로필 이미지
HyunJu Park

작성한 질문수

질문하기