Реагировать — отображать значения с условием

#reactjs

#reactjs

Вопрос:

У меня есть этот компонент класса Field.jsx (фрагмент):

 render() {
...
<div className="field-row"> 

   {this.getPlayersByPosition(players, 5).map((player,i) => (
      <Position
        key={i} 
        className={fullScreen ? "full-screen-player" : "player"}
        getPositionData={this.getPositionData}
        toggleFullScreen={this.toggleFullScreen.bind(this)}
        fullScreen={this.state.fullScreen}
      >{player.name}</Position>
    ))} 
</div>
...
  

{


И мне нужно передать условие рендеринга. Условие должно быть:

При рендеринге я Field хочу показывать только имя игрока.

Когда я нажимаю, и toggleFullScreen это происходит, тогда я показываю все данные.


Это то, что я пытаюсь:

Position.jsx

 export const Position = props => {

    const { matches, mean, goals} = props.getPositionData(props.children);

    return (

        <div

           {props.fullScreen amp;amp; 
            <p>Name: {props.children}</p>   // condition 
          }

            className={props.className}
            onClick={() => {
                props.getPositionData(props.children);
                props.toggleFullScreen();
            }}
        >
            <p>Name: {props.children}</p>
            <p>Goals: {goals}</p>
            <p>Mean: {mean}</p>
            <p>Matches: {matches}</p>
        </div>
    )
}
  

Но я получаю ошибку:

       Line 13:10:  Parsing error: Unexpected token, expected "..."

  11 |         <div
  12 | 
> 13 |         {props.fullScreen amp;amp; 
     |          ^
  14 |      <p>Name: {props.children}</p>
  15 |          }
  16 | 
  

Чего мне не хватает?

Комментарии:

1. Вы не закрыли свой div тег до того, как попытались отобразить тег p — получите линтер

Ответ №1:

 {props.fullScreen amp;amp; 
  <p>Name: {props.children}</p>   // condition 
}
  

Эти строки появляются в середине a <div> , где вы должны указывать реквизиты div. Вам нужно будет переместить его вниз, чтобы он был дочерним элементом div.

 <div
 className={props.className}
 onClick={() => {
     props.getPositionData(props.children);
     props.toggleFullScreen();
 }}
>
 {props.fullScreen amp;amp; (
   <p>Name: {props.children}</p>
 )}
 <p>Goals: {goals}</p>
 <p>Mean: {mean}</p>
 <p>Matches: {matches}</p>
</div>
  

Комментарии:

1. Спасибо. но условие почему-то не работает. Я все равно печатаю все данные, даже если они не в полноэкранном режиме… есть идеи?

2. Что вы хотите скрыть? Весь div? Из предоставленного вами кода выглядело так, как будто вы просто хотели скрыть <p> с именем, так что это то, что я воспроизвел в своем ответе.

3. когда я отображаю поле, я хочу показать только имя игрока и скрыть все остальное. когда я нажимаю, я хочу показать все данные.

4. Я отредактировал вопрос, чтобы сделать его более понятным, извините за путаницу.