2017-08-24 31 views
2

我有以下組成部分:反應設置國有財產,其價值動態

import React, { Component } from 'react'; 

import Action from './action.jsx'; 
import SingleGridEl from './singleGridEl.jsx'; 

class Grid extends Component { 

    constructor(props) { 
     super(props); 
     this.maxN = 110; 
     this.tempArray = []; 
     this.question; 

     this.state = { 
      n1: false, 
      n2: false, 
      n3: false, 
      n4: false, 
      n5: false, 
      n6: false 
     } 

     this.hideSingleGrid = this.hideSingleGrid.bind(this); 
    } 

    getRandomN() { 
     var randomN = Math.floor((Math.random() * this.maxN) + 1); 

     if(this.tempArray.indexOf(randomN) === -1) { 
      this.tempArray.push(randomN); 
     } 
     else { 
      randomN = this.getRandomN(); 
     } 

     return randomN; 
    } 

    getRandomQuestion() { 
     this.question = this.props.current.data.questions[this.getRandomN()]; 
     return this.question; 
    } 

    hideSingleGrid(el, val) { 
     this.setState({ 
      el: val 
     }) 

     console.log('sdfsdf'); 
    } 

    render() { 
     this.getRandomQuestion(); 

     return (
      <section className="game"> 
       <div className="grid"> 

        <div className="row"> 
         <SingleGridEl visibility={this.state.n1} /> 
         <SingleGridEl visibility={this.state.n2} /> 
         <SingleGridEl visibility={this.state.n3} /> 
         <SingleGridEl visibility={this.state.n4} /> 
         <SingleGridEl visibility={this.state.n5} /> 
         <SingleGridEl visibility={this.state.n6} /> 
        </div> 
       </div> 

       <Action t={this.hideSingleGrid} question={this.question} getRandomQuestion={this.getRandomQuestion.bind(this)}/> 
      </section> 
     ); 
    } 
} 

export default Grid; 

是否有可能選擇什麼國家財產需要與它的價值一起更新?

我已經試過這樣:

hideSingleGrid(el, val) { 
    this.setState({ 
     el: val 
    }) 
} 

,以便它可以用於像:

this.hideSingleGrid(n2, true); 
this.hideSingleGrid(n1, true); 

,但它不工作(狀態沒有更新)..

回答

1

你可以用兩種方法做:

var s = {}; 
s[el] = val; 
this.setState(s); 

或位fancier

this.setState({[el]: val}) 

el假設是更新屬性的名稱。