2021.04.17
//main.jsx
const React = require('react');
const ReactDom = require('react-dom');
const WordRelay = require('./WordRelay');
ReactDom.render(<WordRelay />, document.querySelector('#root'));
//WordRelay.jsx
const React = require("react");
const { Component } = React;
const { useState, useRef } = React;
//class 코드
class WordRelay extends Component {
state = {
word: "토마토",
value: "",
result: "",
};
onSubmitForm = (e) => {
e.preventDefault();
if (
this.state.word[this.state.word.length - 1] === this.state.value[0]
) {
this.setState({
result: "정답",
word: this.state.value,
value: "",
});
this.input.focus();
} else {
this.setState({
result: "땡",
value: "",
});
this.input.focus();
}
};
onChangeInput = (e) => {
this.setState({ value: e.target.value });
};
input;
onRefInput = (c) => {
this.input = c;
};
render() {
return (
<>
<div>{this.state.word}</div>
<form onSubmit={this.onSubmitForm}>
<input
ref={this.onRefInput}
value={this.state.value}
onChange={this.onChangeInput}
/>
<button>입력</button>
</form>
<div>{this.state.result}</div>
</>
);
}
}
//hooks 코드
const WordRelay = () => {
const [word, setWord] = useState("토마토");
const [value, setValue] = useState("");
const [result, setResult] = useState("");
const inputRef = useRef(null);
const onSubmitForm = (e) => {
e.preventDefault();
if (word[word.length - 1] === value[0]) {
setResult("정답");
setWord(value);
setValue("");
inputRef.current.focus();
} else {
setResult("땡");
setValue("");
inputRef.current.focus();
}
};
const onChangeInput = (e) => {
setValue(e.target.value);
};
return (
<>
<div>{word}</div>
<form onSubmit={onSubmitForm}>
<input ref={inputRef} value={value} onChange={onChangeInput} />
<button>입력</button>
</form>
<div>{result}</div>
</>
);
};
module.exports = WordRelay;
input
에서 value
, onChange
속성은 세트이다 두 개 를 같이 입력하거나 아니면 defaultValue
속성을 입력해야 한다.