"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > React Render 함수에서 비동기적으로 데이터를 가져오는 방법

React Render 함수에서 비동기적으로 데이터를 가져오는 방법

2024년 10월 31일에 게시됨
검색:152

How to Asynchronously Fetch Data in React Render Functions

React 렌더 함수에서 async/await를 사용하는 방법

React에서 렌더 함수는 일반적으로 순수 동기 작업을 위한 것입니다. 그러나 특정 시나리오에서는 이 기능 내에서 비동기 작업을 수행해야 할 수도 있습니다. 이 문서에서는 렌더링 함수에서 async/await 구문을 효과적으로 사용하는 방법을 설명합니다.

문제 이해

질문에서 강조된 것처럼 async/를 사용하려고 하면 render 함수의 map 함수 내에서 직접 wait를 사용하면 예기치 않은 동작이 발생할 수 있습니다. 이는 지도 함수가 동기 작업을 예상하고 그 안에서 비동기 호출을 수행하려고 시도하면 렌더링 프로세스의 흐름이 중단될 수 있기 때문입니다.

데이터 가져오기와 표시 분리

이 문제를 해결하려면 데이터 가져오기 프로세스를 표시 로직에서 분리하는 것이 좋습니다. 렌더링 함수 내에서 비동기 작업을 수행하는 대신 별도의 구성 요소나 후크에서 데이터 가져오기를 시작하는 것이 더 적절합니다.

상위 구성 요소에서 비동기 데이터 가져오기

이 접근 방식에서는 비동기 요청을 수행하고 데이터를 관리하는 상위 구성 요소(예: ParentThatFetches)를 만듭니다. 라이프사이클 메소드 또는 후크를 활용하여 상위 구성요소는 데이터를 가져와서 상태에 저장합니다. 그 후, 상위 구성 요소는 가져온 데이터를 props로 받는 순수 기능적 하위 구성 요소(예: Child)를 조건부로 렌더링합니다.


class ParentThatFetches extends React.Component {
생성자 () {

this.state = {};

}

comComponentDidMount () {

fetch('/some/async/data')
  .then(resp => resp.json())
  .then(data => this.setState({data}));

}

render () {

{this.state.data && (
  <Child data={this.state.data} />
)}

}
}

const 하위 = ({ 데이터 }) => (

{data.map((x, i) => (<td key={i}>{x}</td>))}


);

후크를 사용하여 데이터 가져오기

React에 후크가 등장하면 데이터 가져오기가 더욱 단순화될 수 있습니다. 다음 코드 조각은 후크를 사용하여 데이터를 비동기적으로 가져오고 이에 따라 상태를 업데이트하는 방법을 보여줍니다.


const ParentThatFetches = () => {
const [data, updateData] = useState();
useEffect(() => {

const getData = async () => {
  const resp = await fetch('some/url');
  const json = await resp.json()
  updateData(json);
}
getData();

}, []);

데이터 반환 &&
}

릴리스 선언문 이 글은 1729236261에서 재인쇄되었습니다. 침해 내용이 있는 경우, [email protected]으로 연락하여 삭제하시기 바랍니다.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3