2016-09-05 16 views
5

Tôi mới sử dụng React, đã thấy một số vấn đề tương tự, nhưng không tìm thấy lý do tại sao điều này xảy ra. Tôi đang nhận được một "Loại lỗi không mong muốn: this.state.data.map không phải là một chức năng". Đây là mã. Xin vui lòng, giúp đỡ để tìm ra vấn đề là gì.Loại vô íchMỗi: this.state.data.map không phải là chức năng

class Audienses extends React.Component { 

    constructor (props) 
    { 
     super(props); 

     this.state = { 
      data: '' 
     }; 

     this.loadFromServer = this.loadFromServer.bind(this); 
     this.childeDelete = this.childeDelete.bind(this); 
     this.childeEdit = this.childeEdit.bind(this); 

    } 

    loadFromServer() { 
     var xhr = new XMLHttpRequest(); 
     xhr.open('get', this.props.url, true); 
     xhr.onload = function() { 
      var data = JSON.parse(xhr.responseText); 
      this.setState({ data: data }); 

     }.bind(this); 
     xhr.send(); 
    } 

    componentDidMount() { 
     this.loadFromServer(); 
    } 


    render() { 

     var audienses = this.state.data.map((value, index) => (
      <OneElement key={value.id} audience={value.audience} description={value.description} /> 
     )); 

     /* or like this 
     var audienses = this.state.data.map(function(s) { 
      <OneElement key={s.id} audience={s.audience} description={s.description} onDeleteClick={this.childeDelete} oneEditClick={this.childeEdit} /> 
     }).bind(this); 
     */ 
     return 
     <div> 
      <h1>Audiences</h1> 
      <table id="services"> 
       <tr> 
        <th>Audience</th> 
        <th>Description</th> 
        <th></th> 
        <th></th> 
       </tr> 
       <tbody> 
        {audienses} 
       </tbody> 
      </table> 
     </div>; 
    } 
} 

Trả lời

12

data trạng thái ban đầu của bạn là String., String không có phương pháp .map, bạn cần thay đổi trạng thái ban đầu của bạn từ '' để []

this.state = { data: [] }; 
+1

Cảm ơn bạn rất nhiều! Nó hiện đang hoạt động! – Ang

3

.map là không áp dụng đối với một đối tượng String. Xem xét việc thay đổi 'dữ liệu' thành một mảng. .map là phương thức gọi hàm trên mọi thành phần của mảng .

Các vấn đề liên quan