Helpex - Trao đổi & giúp đỡ Đăng nhập
14

Đúng vậy, có lẽ tôi đang thiếu điều hiển nhiên ở đây nhưng tôi đang nhận được 'Lỗi loại không xác định: không xác định không phải là một chức năng' Tôi có vẻ như .map () đó là vấn đề nhưng tôi không thể hiểu tại sao.

var idealist = React.createClass({
loadCommentsFromServer: function() {
    $.ajax({
        url: this.props.url,
        dataType: 'json',
        success: function(data) {
            this.setState({data: data});
        }.bind(this)
    });
},
handleButtonClick: function(input) {
    // do stuff //
},
getInitialState: function() {
    return {data: []};
},
componentWillMount: function() {
    this.loadCommentsFromServer();
    setInterval(this.loadCommentsFromServer, this.props.pollInterval);
},
render: function() {
    var clickFunction = this.handleButtonClick;
    var ideas = this.state.data.map(function(i){
        return <ideabox data={i} onButtonClick={clickFunction} />;
    });
    return (
        <div className="idealist">
            {ideas}
        </div>
        );
}
});

React.renderComponent(
<idealist  url="/json/quotes.php"  pollInterval={2000}/>,
document.getElementById('quoteList')
);

Nếu tôi thay đổi nó thành var ideas = this.state.data, tôi không gặp bất kỳ lỗi nào, dữ liệu JSON được định dạng chính xác, có thể sai sót điều gì?

14 hữu ích 4 bình luận 47k xem chia sẻ
17

Đó là một sai lầm ngu ngốc, ngoặc kép.php không trả về dữ liệu JSON được định dạng đúng nên nó không phải là một mảng .map () đang được gọi. Bài học rút ra? Đừng coi người khác nói rằng mã của họ hoạt động!

17 hữu ích 0 bình luận chia sẻ
6

.map() là một phương thức tạo một Mảng mới với các kết quả được cung cấp.

Đây là tài liệu cho điều đó:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map

Điều bạn có thể làm ở đây là thay đổi thuộc .datatính của đối tượng để trả về một Mảng. Vì .map()sẽ chỉ hoạt động trên các đối tượng kiểu Mảng.

6 hữu ích 1 bình luận chia sẻ
loading
Không tìm thấy câu trả lời bạn tìm kiếm? Duyệt qua các câu hỏi được gắn thẻ javascript reactjs react-jsx , hoặc hỏi câu hỏi của bạn.

Có thể bạn quan tâm

loading