2017-09-25 3 views
0

私は全く新しい反応を示しています。次のチュートリアルコードについて質問があります。REACT:チュートリアルコードによる質問

var Board = React.createClass({ 
    render: function() { 
    var className = "board"; 
    if (this.props.selected) { 
     className += " selected"; 
    } 
    return (
     <div className={className}> 
     {this.props.index + 1} 
     </div> 
    ); 
    } 
}); 

var BoardSwitcher = React.createClass({ 
    render: function() { 
    var boards = []; 
    for (var ii = 0; ii < this.props.numBoards; ii++) { 
     var isSelected = ii === 0; 
     boards.push(
     <Board index={ii} selected={isSelected} key={ii} /> 
    ); 
    } 

    return (
     <div> 
     <div className="boards">{boards}</div> 
     <button>Toggle</button> 
     </div> 
    ); 
    } 
}); 

ReactDOM.render(
    <BoardSwitcher numBoards={3} />, 
    document.getElementById('container') 
); 

練習によると、最初のボードは常に選択されます(var isSelected = ii === 0)。しかし、私はなぜそれがこのようなのか分かりません。 iiは最初の反復中に厳密に0に等しくなります。 isSelectedは、最初の反復では「true」に、すべての反復では「false」になります。したがって、常に最初のボードを選択するとは限りません。

ボードのインデックスはiiに等しく、レンダリングが呼び出されるたびに1で更新されます。

私の思考プロセスには何が問題なのですか?

+0

作成した最初のボードには常にマークが付けられ、後で選択されないボードは常にマークされます。ループは3つのボードを作成し、最初のものを選択して設定しています。あなたがこれを始めるたびに、それは選択されたものとして作られた最初のボードと、そうでないものとしてマークされます。 – DillGromble

+0

boards.pushによってボードが作成されるのはいつですか? – aDev

+1

ボードのインデックスはiiと等しく設定されています。また、ii === 0のブール値と同じ値が選択されます。これは最初のボードでのみ発生します。ボードのインスタンスは3つあります。 3つのボードは、[<ボードインデックス= 0が選択された=真/>、<ボードインデックス= 1が選択された= false />、ボードインデックス= 2選択= false />] – DillGromble

答えて

0

多分あなたはこれ以上のことを考えていないかもしれませんし、このループが同期的なやり方で起こることが分かります。したがって、ボードの最初の四角はボードとセレクションクラスが追加されたアレイに追加されます。ステートメントは最初のケースでのみ真と評価されるため、他のステートメントは実行されません。

関連する問題