2016-10-21 5 views
1

私はreactとjsを学んでいるので、20ページごとにループしてこのページの下に表示しますブートストラップを使ってインデックスを作成するしかし、それは本当にこの作業ではない私のコードです:配列内の20の位置ごとにループする方法

const pictureItems = this.state.imgFiles.map((img, index) => { 
    return (
    <PictureListItem 
     id={index} 
     key={`img-${img.name}`} 
     imgFile={img} 
     pictureDataUpdate={this.onUpdatePicture} 
    /> 
); 
}); 
const pageNumber = this.state.imgFiles.length/20; 
let pages = ""; 
for (let i = 0; i < pageNumber; i++) { 
    pages += <li><a>{i}</a></li>; 
    return pages; 
} 

私はループにインデックスの値を渡すと、スタートのために20を掛けた後、最後に20を追加することができかもしれ考えていました。しかし、私はページをよく見せてもらえません。

+1

[分割配列を分割する](http://stackoverflow.com/questions/8495687/split-array) -into-chunks) –

答えて

0

protip:言語自体が既に行っていることはしないでください。

const picturesPerPage = 20; 
const images = this.state.imgFiles; 

... 

// get the current page, rounded down. We don't want fractions 
let currentPageNumber = (images.length/picturesPerPage)|0; 

// find the start and end position in the "images" array for this page 
let start = currentPageNumber * picturesPerPage; 
let end = (1+currentPageNumber) * picturesPerPage; 

// cool: make JS get those items for us, and then map those items to bits of JSX 
let pages = images.slice(start, end).map(img => { 
    return (
    <li key={img.src}> 
     <a href={img.href}> 
     <img src={img.src} alt={img.alt}/> 
     </a> 
    </li> 
); 
}); 

// and we're done. 
return <ul>{ pages }</ul>; 

あなたはオンザフライ要素に反応する配列を構築している場合、彼らが反応差分エンジンが適切に仕事をすることができるようにkey属性を持っている必要があること注 - キーニーズ一意に識別するために、実際のものなので、配列の位置(['a'、 'b']と['b'、 'a'])は同じ配列ですが、配列の位置がキー実際にコンテンツの変更が行われなかったときに発生したと主張し、状況がひどく非効率的になると主張している。

配列に要素を追加するときに+=を使用しようとしました。これは不正な構文です。+=は文字列連結です。配列に個々の要素を追加するには、array.pushを使用します(または、何か変なことが必要な場合はarray.splice

+0

明白な欺瞞に答えるには余りにも多くの担当者がいます。 –

+2

それに反して:私は、テキストを書き留め、背中の肌を取り除き、明らかに今のところ助けが必要な人を助けるのに、私はこの質問に答えることができると知っている十分な担当者を持っています。 「これは前に尋ねられました」と伝えることは、新しいことを学ぶ上で誰かの正直な試みを効果的に撃退する素晴らしい方法です。彼らは最初のポスターにとっては非常にまれなコードで、良い質問をする努力をしました。良い質問をして、答えを得てください。悪い方に尋ね、「重複して閉じる」を得てください。 –

+0

重複したものとして閉じてしまうことが悪いことではないことを知るのに十分な担当者を持っています*:[重複する質問は必ずしも悪くはない、同じ問題の別の説明が将来の訪問者が探している回答を見つけるのに役立ちます。 ](http://meta.stackexchange.com/questions/10841/how-should-duplicate-questions-be-handled)。彼らは答えを得て、 "新しいもの"を学ぶでしょう。確かに、回答者が既に回答した質問に答えることで、より多くの担当者を育てる機会は少なくなりますが、長期的には訪問者にとってはより良いことです。 –

関連する問題