import { useState } from "react";
function Mycomponent() {
const [values, setValues] = useState('');
const handleChange = (e) => {
const nextValues = e.target;
setValues(nextValues);
};
return <input value={values} onChange={handleChange} />
}
function App() {
return (
<div>
<Mycomponent />
</div>
);
}
export default App;
const nextValues = e.target.toUperCase(); 로 바꾸면 소문자 입력해도 input 값이 대문자로 나온다
import { useState } from "react";
function Mycomponent() {
const [values, setValues] = useState('');
const handleChange = (e) => {
const nextValues = e.target.toUperCase();
setValues(nextValues);
};
return <input onChange={handleChange} />
}
function App() {
return (
<div>
<Mycomponent />
</div>
);
}
export default App;
input 값이 소문자로 입력되지만 리액트 개발자 도구에서 State 값을 확인하면 대문자로 나온다
import { useEffect, useRef } from "react";
// 이미지 파일 선택 창
function FileInput() {
const [value, setValue] = useState();
const handleChange = (e) => {
const nextValue = e.target.files[0];
setValue(nextValue);
};
return <input type="file" onChange={handleChange} />;
}
export default FileInput;
Ref 객체 생성
import { useRef } from 'react';
// ...
const ref = useRef();
ref Prop 사용하기
const ref = useRef();
// ...
<div ref={ref}> ... </div>
Ref 객체에서 DOM 노드 참조하기
const node = ref.current;
if (node) {
// node 를 사용하는 코드
}
import { useEffect, useRef } from "react";
// 이미지 파일 선택 창
function FileInput({ name, value, onChange }) {
const inputRef = useRef();
const handleChange = (e) => {
const nextValue = e.target.files[0];
onChange(name, nextValue);
};
useEffect(() => {
if (inputRef.current) {
console.log(inputRef);
}
}, []);
return <input type="file" onChange={handleChange} ref={inputRef}/>;
}
export default FileInput;
DOM 노드는 반드시 랜더링이 끝나야 생기니까 ref 객체의 current 값도 화면에 검포넌트가 랜더링 됐을 때만 존재한다 그래서 항상 값이 존재하는지 inputRef.current를 통해서 확인한다
참고
코드잇