2017-07-09 3 views
0

私は、私の親にインポートされた外部ファイル "players.js"である、プレーヤーと呼ばれる既存の配列に追加しようとしています。onClickで配列に追加するために.pushを有効に使用

players.push({ 
    name: 'Maul', 
    id: 26 
}); 

をそしてIDをキーに使用され、名前が配列で更新されるように、その作品:

私は書くことができます。次のように

私は

handleAddPlayer =() => { 
    console.log('i am working'); 
    players.push({ 
     name: 'Maul', 
     id: 26 
    }); 
    }; 

そして、私のボタンを作成する場合は、私は

<div> 
     <h4>Add A Player</h4> 
     <input /> 
     <button onClick={this.handleAddPlayer}>Press to Add Player</button> 
    </div> 

そして、私の状態を持っているのです。

this.state = { 
    id: players.id, 
    totalScore: 0, 
    countInfo: [], 
    evilName: '', 
    color: '#6E68C5', 
    scoreColor: '#74D8FF', 
    fontAwe: 'score-icon', 
    incrementcolor: '', 
    scoreNameColor: 'white', 
    glow: '', 
    buttonStyle: 'count-button-start', 
    players, 
}; 

それは動作しません。

ここから私は2つの質問がある:

  1. は、私はボタンをクリックしたときに、なぜそれが更新されませんが、関数として前にいない作品?

  2. は 私は、入力に名前を入れて、私の配列に加え、独自のキーを生成したい
  3. は私がCONCATENATEを試してみましたが、多くの成功をない持っていた

players.js。

+0

あなたは私たちにあなたが得るエラーを伝えることができますか?それは "未定義のプロパティ 'プッシュ'を読み取ることができませんか? – Taxellool

+0

私はエラーが全く発生しないことは何も起こりません – sthig

答えて

2

プレーヤー状態オブジェクトのプロパティですので、あなたは、プロパティを更新するSETSTATEを呼び出すことになるでしょう:

handleAddPlayer =() => { 
    // create a clone of your array of players; don't modify objects on the state directly 
    const players = this.state.players.slice(0); 

    players.push({ 
    name: 'Maul', 
    id: 26 
    }); 

    this.setState({ 
    players: players, 
    }); 
}; 
+0

それは魅力のように働いて、私もたくさん学んだので、ありがとう! ''は名前に値を渡し、 'id'は一意の数字にすることができる方法を理解する助けになりますか? – sthig

+0

待って、私はランダム#を持って、それを考え出した。今すぐ ''の値を 'name:'エリアに渡します – sthig

+0

https://facebook.github.io/react/docs/forms.html#controlled-componentsを見てください。テキスト入力の値を保持する 'value'のような状態にプロパティを追加し、入力を' '。 次に、handleAddPlayerメソッドはthis.state.valueを見て、入力ボックスに値を抽出します。 – Tuanderful

関連する問題