1. ホーム
  2. reactjs

[解決済み] componentDidMount()での状態設定

2023-07-11 01:37:53

質問

に状態を設定することがアンチパターンであることは承知しています。 componentDidMount に状態を設定するのはアンチパターンであり、状態は componentWillMount の数の長さを設定したいが、仮に li タグの長さを状態として設定したいとします。その場合、状態を設定するのは componentWillMount に状態を設定することはできません。 li タグはそのフェーズではマウントされていないかもしれないからです。では、どうすればいいのでしょうか?状態を componentDidMount ?

どのように解決するのですか?

を呼び出すことは、アンチパターンではありません。 setStatecomponentDidMount . 実際、ReactJSでは、この例を のドキュメントにその例があります。 :

componentDidMountライフサイクルメソッド内のAJAXコールでデータを入力する必要があります。これは、データが取得されたときに、setStateを使用してコンポーネントを更新できるようにするためです。

Docの例

componentDidMount() {
    fetch("https://api.example.com/items")
      .then(res => res.json())
      .then(
        (result) => {
          this.setState({
            isLoaded: true,
            items: result.items
          });
        },
        // Note: it's important to handle errors here
        // instead of a catch() block so that we don't swallow
        // exceptions from actual bugs in components.
        (error) => {
          this.setState({
            isLoaded: true,
            error
          });
        }
      )
  }