shinke1987.net
雑多な備忘録等のはず。
他のカテゴリ・タブ
目次
PR

React:useState の動作確認

2024-05-16 2024-05-16
カテゴリ: React

環境

React:v18.3.1

子から親のState更新

※ 親から子のパターンはlifting state up (Stateのリフトアップ)を考えた方が良い。

App.tsxの内容

import { ReactNode } from 'react';
import Parent from './Parent.tsx';

function App(): ReactNode {
  return (
    <>
      あいうえお
      <Parent />
    </>
  );
}

export default App;

Parent.tsxの内容

import { ReactNode, useState } from 'react';
import Child1 from './Child1.tsx';

function Parent(): ReactNode {
  const [child1Value, setChild1Value] = useState<string>('Child1の初期値');
  const [parentValue1, setParentValue1] = useState<string>('Parentの初期値');

  function parentBtnClickFunc() {
    alert('parentBtnClickFunc');
    setChild1Value('parentBtnClickFunc');
  }

  return (
    <>
      <div>
        親:
        {parentValue1}
      </div>
      <button type="button" onClick={parentBtnClickFunc}>
        親ボタン
      </button>
      <Child1 childProp={child1Value} parentStateFunc={setParentValue1} />
    </>
  );
}

export default Parent;

Child1.tsxの内容

import { ReactNode } from 'react';

type Child1Props = {
  childProp: string,
  parentStateFunc: Function
};

function Child1({ childProp, parentStateFunc }: Child1Props): ReactNode {
  function childBtnClickFunc(): void {
    alert('childBtnClickFunc');
    parentStateFunc('子からStateが変更されました');
  }

  return (
    <>
      <div>
        子:
        {childProp}
      </div>
      <button type="button" onClick={childBtnClickFunc}>
        子ボタン
      </button>
    </>
  );
}

export default Child1;
同一カテゴリの記事