>

현재 NHL의 API를 사용하여 하키 응용 프로그램을 만들고 있습니다.

React를 처음 접했을 때 항상 실수입니다. item.map은 함수가 아닙니다.

import React, {Component} from 'react';
class Api extends Component {
  constructor(props) {
    super(props);
    this.state = {
      error: null,
      isLoaded: false,
      items: []
    };
  }
  componentDidMount() {
    fetch("https://statsapi.web.nhl.com/api/v1/divisions/1")
      .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
          });
        }
      )
  }

  render() {
    const { error, isLoaded, items } = this.state;
    if (error) {
      return <div>Error: {error.message}</div>;
    } else if (!isLoaded) {
      return <div>Loading...</div>;
    } else {
      return (
          <ul>
          <li key={item.id}>{item.name}</li>
          </ul>
      );
    }
  }
}
export default Api

오류는 분명히 렌더링 기능에 있지만 오류를 해결할 수없는 것 같습니다!

도움을 주셔서 감사합니다.


  • 답변 # 1

    당신은 items.map() 를 호출하지 않습니다  어딘가에. 이것을 시도하십시오 :

       render() {
            const { error, isLoaded, items } = this.state;
            if (error) {
                return <div>Error: {error.message}</div>;
            } else if (!isLoaded) {
                return <div>Loading...</div>;
            } else {
                return (
                    <React.Fragment>
                        <ul>
                        {
                            items.map(item =>
                                <li key={item.id}>{item.name}</li>
                            )
                        }
                        </ul>
                    </React.Fragment>
                );
            }
        }
    
    

    result.items 인 경우 작동합니다  배열입니다.

관련 자료

  • 이전 bash - 여유 공간이있는 여러 줄 문자열 (보존 들여 쓰기)
  • 다음 delphi - 양식이 처음 표시 될 때 일부 코드를 실행하려고합니다