2016-11-30 3 views
1

Я начинаю в реакторе, и я пытаюсь сделать проект «Camer Leader Board» от FreeCodeCamp. В StackOverflow фрагменте кода он бросает мне:
`«сообщение»:«SyntaxError: Линейный Бабель сценарий: ожидаемый соответствующий JSX закрывающий тег для Пожалуйста, помогите мне, чтобы узнать, что это неправильно Вот код:.Реакция Синтаксис Ошибка: ожидаемый соответствующий тег закрытия JSX для <img>

"use strict"; 
 
class TableBox extends React.Component { 
 
    constructor(props) { 
 
     super(props); 
 
     this.state = { 
 
      data: [] 
 
     }; 
 
    } 
 

 
    loadCampersFromServer() { 
 
     fetch('https://fcctop100.herokuapp.com/api/fccusers/top/alltime')//alltime or recent 
 
      .then(
 
       (response) => { 
 
        if (response.status !== 200) { 
 
         console.log('Looks like there was a problem. Status Code: ${response.status}'); 
 
         return; 
 
        } 
 
        response.json().then((data) => { 
 
         console.log('getting data:', data); 
 
         this.setState({data: data}); 
 

 
        }) 
 
       } 
 
      ) 
 
      .catch(function (err) { 
 
       console.log('Fetch Error :-S', err); 
 
      }); 
 
    } 
 

 
    componentDidMount() { 
 
     this.loadCampersFromServer(); 
 
    } 
 

 
    render() { 
 
     return <CampersList />; 
 
    } 
 
} 
 

 
class CampersList extends React.Component { 
 
    constructor(props) { 
 
     super(props); 
 
    } 
 
    render() { 
 
     console.log(this.state); 
 
     let campersNodes = this.state.data.map((element, index) => { 
 
      return (
 
       <Camper user={element} index={index} /> 
 

 
      ); 
 
     }); 
 
     return (
 
      <table> 
 
       <tr> 
 
        <th>#</th> 
 
        <th>Camper Name</th> 
 
        <th>Points in past 30 days</th> 
 
        <th>All time points </th> 
 
       </tr> 
 
       {campersNodes} 
 
      </table> 
 
     ) 
 
    } 
 
} 
 

 

 
class Camper extends React.Component{ 
 
    constructor(props){ 
 
     super(props); 
 
    } 
 
    render(){ 
 
     <tr> 
 
      <td>{this.props.index}</td> 
 
      <td> 
 
       <img src = {this.props.user.img} alt="logo"> 
 
       {this.props.user.userName} 
 
      </td> 
 
      <td>{this.props.user.recent}</td> 
 
      <td>{this.props.user.alltime}</td> 
 
     </tr> 
 
    } 
 
} 
 

 
ReactDOM.render(<TableBox />, document.getElementById('root'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script> 
 
<div id="root"></div>

ответ

4

Вы должны закрыть img тег с закрытием />:

<img src={this.props.user.img} alt="logo" /> 

JSX не так мягко, как HTML, когда дело доходит до правильного закрытия тегов.

+0

Какое сообщение об ошибке вы видите, когда вы правильно закрываете тег 'img'? – Timo

0

Сообщение, возвращаемое компилятором, сообщает вам, что для элемента img нет закрывающего тега. JSX - это не то же самое, что html.

0

Как объясняется ошибка, вам необходимо закрыть тег изображения в компоненте camper.

<td> 
    <img src = {this.props.user.img} alt="logo" />{this.props.user.userName} 
</td > 

Это должно сработать.