Рендеринг случайных пар из списка имен, собранных от пользователя в React? - PullRequest
0 голосов
/ 29 сентября 2018

Я новичок в React и застрял на этом некоторое время.Я создаю инструмент, который случайным образом создает пары для игры в настольный теннис из списка имен, собранных у пользователя.Я создал поле ввода (initialState = '' и кнопку (initialState = [], которая добавляет имена в массив. Я написал некоторый код в отдельном файле Js для рандомизации массива и возврата пар, который работает, когда я запускаюв узле в терминале. То, с чем я борюсь, это то, как я получаю пары для рендеринга в браузере. Любая помощь / совет / указатели будут с благодарностью. Заранее спасибо

import React, { Component, Fragment } from 'react'; 

class PlayerList extends Component {
constructor(props) {
    super(props); 

    this.state = {
        value: '', //empty string for user to input player names
        playerNames: [], // empty array to store players name 
    }

    this.handleChange = this.handleChange.bind(this)
    this.handleSubmit = this.handleSubmit.bind(this)
    this.matchPairs = this.matchPairs.bind(this)
}

handleChange(event) {
    this.setState({
        value: event.target.value
    });
}

handleSubmit(event) {
    this.setState({
        value: '', 
        playerNames: 
        this.state.playerNames.concat([this.state.value] + ' '),
    }); 
}

matchPairs(event) {

    let playerMatches = this.state.playerNames;

    if (playerMatches.length % 2 != 0) {
    alert("You must have an even number of players. You currently 
    have " + playerMatches.length + " players.");

}

/*
Shuffle the provided array.
*/

let shuffle = function(a) {
    for (let i = a.length - 1; i > 0; i--) {
        const j = Math.floor(Math.random() * (i + 1));
        [a[i], a[j]] = [a[j], a[i]];
    }
    return a;
} 

/*
Return an array of pairs.

Loop through the array and on each iteration, use ++i to push it 
to the next item, so each iteration is actually incrementing i 
twice.
*/

let getPairs = function(a) {
    let pairs = []; //Create an empty array
    for (let i = 0; i < a.length; i++) { // loop through array
        pairs.push([ // add a pair to the pairs array
            a[i], // get the current array position
            a[++i] // increment i to get the next array position
        ]);
    }
    return pairs;
}

this.setState({
    playerMatches: 
this.state.playerMatches.getPairs(shuffle(playerMatches))
    });
}

//console.log(getPairs(shuffle(names))); 

render() {
    return (

        <Fragment> 

            <div className="player-form">   

                <input className="inputField" 
                placeholder="Enter Player Name..."
                value={this.state.value} 
                onChange={this.handleChange} />

                <p>Player: {this.state.value}</p> 

                <button className="addBtn" 
                onClick={this.handleSubmit}>Add Player
                </button>

            </div>

            <button className="generateBtn" 
                onClick={this.matchPairs}>Generate Pairings
                </button>

            <div className="player-matches"> 

                <label className="subheadright">Match 
                Pairings</label>

                <ul>
                    {
                    this.state.playerMatches.map((item, index) => 

                        <li key={index}>{item}</li> 

                        )
                     }

                  </ul>

               </div> 

        </Fragment> 

        );
    }
}

export default PlayerList; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...