Проблема, когда одна и та же переменная становится истинной в разных частях кода в React / Js - PullRequest
0 голосов
/ 07 мая 2020

Я новичок в реакции и делаю игру. Здесь я написал

{showButton && (
      <div>
        <button className="button_player1" onClick={evt => this.useBaron_id(evt,0,0)} >Player1</button>
        <button className="button_player2" onClick={evt => this.useBaron_id(evt,1,0)}>Player2</button>
        <button className="button_player3" onClick={evt => this.useBaron_id(evt,2,0)}>Player3</button>
        <button className="button_player4" onClick={evt => this.useBaron_id(evt,3,0)}>Player4</button>
      </div>
    )}

, чтобы отображать и не отображать кнопки, если showbutton истинно. Однако я использовал его в разных if заявлениях

{showButton && (
      <div>
        <button className="button_player1" onClick={evt => this.useGuard_id(evt,0,0)} >Player1</button>
        <button className="button_player2" onClick={evt => this.useGuard_id(evt,1,0)}>Player2</button>
        <button className="button_player3" onClick={evt => this.useGuard_id(evt,2,0)}>Player3</button>
        <button className="button_player4" onClick={evt => this.useGuard_id(evt,3,0)}>Player4</button>
      </div>
    )}

Теперь он работает, но каждый раз, если есть карта Барона и Стража, эта кнопка работает для них обоих, поэтому я не буду, если он пойдет в функцию useBaron_id или useGuard_id. Я могу писать по отдельности showButton, однако у меня больше 8 карточек, поэтому я не хочу писать, например, showButton, showButton1 и т.д. c. Есть ли способ сделать это проще? Каждый раз, когда я вызываю эту функцию, для каждой карты свой

useBaron = evt => { var { showButton } = this.state;  this.setState({showButton : true})}

useGuard = evt => { var { guard_select_card } = this.state;  this.setState({guard_select_card : true})}
useGuard_id_card = (evt,id) =>  { 
      var { guard_select_card,id_of_card } = this.state; 
      id_of_card=id 
      this.setState({ id_of_card }) 
      this.setState({showButton : true})
      this.setState({guard_select_card : false})


А в моих useGuard_id и useBaron_id и выключаю их, как this.setState({showButton : false})

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