class Form extends Component {
handleSubmitClick = () => {
const name = this._name.value;
// do something with `name`
}
render() {
return (
<div>
<input type="text" ref={input => this._name = input} />
<button onClick={this.handleSubmitClick}>Sign up</button>
</div>
);
}
}
input에는 어떤 값을 입력했는지에 알고 있기 때문에 ref로 값을 다룰 수 있다. 이렇게 하면 너가 데이터가 필요할 때 당겨와야 한다. 예를 들면 submit의 경우가 있다.
이러한 방식은 간단한 방식을 만들 때는 유효하지만, 별로 강력하지 않습니다.
제어된 폼에선 값을 props로 같고있으면서, callback handler를 변화시에 호출합니다.
This flow kind of ‘pushes’ the value changes to the form component,
이러한 플로우는 push종류의 방식입니다. 폼 컴포넌트의 값이 변하면 항상 상태 또한 변화합니다. 이건 데이터와 ui가 항상 싱크가 맞춰진다는 의미입니다.
각 폼들은 설정되는 다른 props을 가집니다.
각 방식은 장단점이 있다. 만약 복잡하지 않은 폼을 만들 때는 제어되지 않은 폼도 유용하다.