2016-11-30 1180 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 > 

這應該有效。

相關問題