2016-11-30 1178 views
1

我是React的初学者,我尝试从FreeCodeCamp做一个“Camper Leader Board”项目。 在StackOverflow的代码片断它抛出我:
`“消息”:“语法错误:嵌入式通天脚本:预计相应的JSX关闭了 标签请帮我找出什么是错误的下面的代码:React语法错误:预期对应的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

由于错误解释自己,您需要关闭露营组件中的图像标记。

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

这应该有效。

相关问题