1
0

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 1 year has passed since last update.

React勉強備忘録(基礎知識編)

Last updated at Posted at 2022-11-28

動作環境


npm 8.12.1
node 18.4.0
React 18.2.0

基礎知識


JSX

JSXは「JavaScript XML」の略
Javascript内にhtmlの記載ができる。
jsx内で、htmlのclass属性を実装するには、jsのclass(オブジェクト指向とかのクラス)と区別するために、classNameと記述する必要がある。
※ファイルの拡張子は.jsxにする。
 jsでもjsxを使用できるが、明示的に.jsxにしておいたほうが無難である。

import React from 'react'

const BasicHeadingOne = (props) => {
  return (
    <h1 className={props.className}>
      {props.text}
    </h1>
  )
}

export default BasicHeadingOne
記載方法

最上位のタグがないと文法上エラーとなってしまう。

import React from 'react'

const Article = () => {
  return (
    <> // ここが最上位のタグ
      <BasicHeadingOne text="jsxについて" />
      <p>jsxの特徴や、使用方法について紹介しています</p>
    </>
  )
}

export default Article

コンポーネント

Reactで開発を行う際は、コンポーネント単位でソースコードを記述していく

const TextInput = (props) => {
  const { type, name, value, className, onChange, required, id, onClick, placeholder } = props
  return (
    <input
      type={type}
      name={name}
      value={value}
      className={className}
      onChange={onChange}
      required={required}
      id={id}
      onClick={onClick}
      placeholder={placeholder}
    />
  )
}

export default TextInput
コンポーネントの種類

クラスコンポーネントと関数コンポーネントの2種類が存在する。

  • クラスコンポーネント
import React from "react";

class ClassComponent extends React.Component {
  render() {
    return <div>This is Class Component</div>;
  }
}
  • 関数コンポーネント
import React from "react";

const Component = () => {
  return <div>This is Functional Component</div>;
};

※現状は関数コンポーネントを使用するほうが一般的になっている。

Props

コンポーネントの再利用性を向上させるための仕組み
親コンポーネントから子コンポーネントへデータや関数を渡す際は、propsを使用する。
※子から親へのデータを渡すことは不可

import React from 'react'

const List = (props) => {
  return (
    <ul class="list-group">
      {props.list.map((data) => (
        <li key={index.toString()} class="list-group-item">
          {data.title}
        </li>
      ))}
    </ul>
  )
}

export default List
複数propsの渡し方

単純に記載するとこうなる。

return (
    <StockEditForm
    productName={productName}
    productImageUrl={productImageUrl}
    productUrl={productUrl}
    expiryDate={expiryDate}
    number={number}
    inputProductName={inputProductName}
    inputProductImageUrl={inputProductImageUrl}
    inputProductUrl={inputProductUrl}
    inputExpiryDate={inputExpiryDate}
    inputNumber={inputNumber}
    />
)

だが、これをスプレッド演算子で以下のように簡潔に記述できる。

<StockEditForm
  {...{
    productName,
    productImageUrl,
    productUrl,
    expiryDate,
    number,
    inputProductName,
    inputProductImageUrl,
    inputProductUrl,
    inputExpiryDate,
    inputNumber
  }}
/>

Children

子要素の数がいくつあってもpropsとして子要素をレンダリングすることが可能

import ...

const ...

return (
  <BasicWrapper className="wrapper-stock"> // ラッパー用のコンポーネント
    <Modal/>
    <Paragragh>
    ...
  </BasicWrapper>
import ...

const BasicWrapper = ({ children }) => {
    return <Wrapper>{children}</Wrapper>
}
1
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?