LoginSignup
0
0

More than 3 years have passed since last update.

React初心者覚書07 - フォーム ー

Last updated at Posted at 2020-07-23

Reactの記事を参考に初心者がわからないけど覚書を書いています。

FORM

  • Formは内部になんらかの状態をもっているので、他のDOM要素とは少し異なる
html_form.html
<form>
  <label>
    Name:
    <input type="text" name="name" />
  </label>
  <input type="submit" value="Submit" />
</form>

  • フォームの送信に応答してユーザがフォームに入力したデータにアクセスするような JavaScript 関数があった方が便利
  • "制御された (controlled) コンポーネント” と呼ばれるテクニックを使う

制御されたコンポーネント= React で値を制御している入力フォーム要素のこと

  • HTML では 、、そして のようなフォーム要素は通常、自身で状態を保持しているが、 Reactでは、変更されうる状態は通常はstateプロパティに保持され、setState()関数でのみ更新される。

this.handleChange = this.handleChange.bind(this);がわからない

NameForm.handleChange = NameForm.handleChange.bind(NameForm);ってこと?

でも見てたら何をしているかはなんとなく理解。
フォームイベントが起こると、 NameFormクラス自身の中で、イベントの内容に合わせて変更されるってこと?

nameform.js

class NameForm extends React.Component {
  constructor(props) {
    super(props);
    this.state = {value: ''};

    this.handleChange = this.handleChange.bind(this);
    this.handleSubmit = this.handleSubmit.bind(this);
  }

  handleChange(event) {
    this.setState({value: event.target.value});
  }

  handleSubmit(event) {
    alert('A name was submitted: ' + this.state.value);
    event.preventDefault();
  }

  render() {
    return (
      <form onSubmit={this.handleSubmit}>
        <label>
          Name:
          <input type="text" value={this.state.value} onChange={this.handleChange} />
        </label>
        <input type="submit" value="Submit" />
      </form>
    );
  }
}

ReactDOM.render(
  <NameForm />,
  document.getElementById('root')
);

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0