2016-07-22 3 views
0

특정 범주의 뉴스를 표시하는 구성 요소를 구축 중입니다. 일부 페이지는 100 개의 기사를 포함 할 수 있으며 약 100 배 정도 더 많을 수 있습니다.많은 부분의 반응 및 렌더링

내 현재 접근법은 50 개 기사의 일부를 다운로드하여 <NewsListPortion> 단순한 (상태 비 저장, render 만 포함) 구성 요소 안에 렌더링하는 것입니다. 그러나 그 부분이 겹쳐 쌓이면 이미로드 된 부분을 다시 렌더링합니다. 그리고 그 성능이 안 맞나요? - 다시 렌더링 할 때마다 모든 것을

[ 
    { 
    page: 1, 
    offset: 1, 
    data: [{ // 50 articles }] 
    }, 
    { 
    page: 2, 
    offset: 1, 
    data: [{ // 50 articles }] 
    } 
] 

그래서, 다시, 내 관심사는 여기에 성능은 다음과 같습니다

render() { 
    if(this.state.loaded) { 
     return (
     <div className="news-list__wrapper"> 
      {this.data.map(p => { 
      const key = `${p.page}-${p.offset}`; 
      if (p.data.length > 0) { 
       return (
       <NewsListPortion key={key} page={p.page} offset={p.offset} data={p.data} /> 
      ) 
      } 
      })} 
      {this.state.progress ? 
      <img src={loader} alt="" /> 
      : 
      this.state.finished ? 
       <div><hr />koniec</div> 
       : 
       <button id="load-more-news" onClick={this.loadNews.bind(this)}>Wczytaj więcej</button> 
      } 
     </div> 
    ) 
    } else { 
     return (
     <img src={loader} alt="" /> 
    ) 
    } 
    } 

this.data이 같은 객체로 구성된 배열입니다 :

내 코드는 다음과 같습니다 새로운 portfion 도착 나쁜 생각처럼 보이지만, 나는 다른 방법으로 이것을 어떻게 해야할지 모르겠다.

답변

1

React는 더 많은 뉴스 부분을 제공 할 때 모든 것을 다시 렌더링하지 않습니다. 이미 뉴스 섹션 구성 요소에 키를 첨부했습니다. 새 데이터 (뉴스 부분)가 올 때마다 반응하여 이전 키를 모두 사용하고 적절한 뉴스 부분 만 추가하고 이전 버전을 만지지 마십시오. 모두 반응에주의를 기울여야합니다. 성능 향상을 위해 별도의 조치를 취하지 않아도됩니다.

키를 고유하게 만드십시오.

관련 문제