0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

お猿さんのためのReactまとめ:Vol.1 state & props編

Last updated at Posted at 2021-03-01

猿というか自分自身の為のまとめです。
Reactを学習していく中で、「あれ?これはなんだったっけ?」的な事をまとめて行きたいと思います。
また、Qiitaの書き方に慣れる意味もあります。
恐れずに言うのであれば、「アルジャーノンに花束を」のようにどんどん書くレベルが上がることを目指します。(勿論、物語の途中までで良いですが・・・。)
##1...最もシンプルな表示例
React (1).png
親コンポーネント、子コンポーネントともにreturnしたい要素は<div>で囲む。
React (2).png
##2...propsで要素を親から子に渡す。
React (4).png
図のようにして使いまわすことができる。
##3...propsで渡せる値の型
React (5).png
##4...stateについて
###stateとは?

  • コンポーネント内で管理する変数(=ローカルステート) <-->グローバルステート
  • propsとして子コンポーネントに渡せる。

###なぜstateを使うのか?

  • render()では値を変更してはいけない。
  • 値の変更にがsetState()を使う。
  • stateの変更は再レンダーのきっかけになるのでrender()内で行うと無限ループになってしまう。
  • 設定はクラスコンポーネントが前提。
  • constructor()内でオブジェクト型で記述する。
Blog.jsx
class Blog extends React.Component {
  //コンストラクター内で記述
  constructor(props) {
    super(props);
    //オブジェクト型で記述 カッコは波カッコ{}
    this.state = {
      isPublished: false
    }
  }
  render() {
    return (
      <div>
        <Article 
           title='React'
           //このように記述することで同じコンポーネント内は参照できる。
           isPublished={this.state.isPublished}
        />
      </div>
    )
  };
};

export default Blog;
Article.jsx
const Article =(props)=> {
  return (
    <>
      <h2>{props.title}</h2>
      <label htmlFor="check">stateの状態</label>
      <input
        type='checkbox'
        //子コンポーネントはこのように受け取る。
        checked={props.isPublished}
        id='check'
      />
    </>
  )
};

export default Article;

React (6).png
###stateを変更する

  • setState()を使い、その中に記述されたstateのみ変更する。
  • 関数にラップする。

React (8).png
参考:日本一わかりやすいReact入門【基礎編】

0
1
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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?