আমি রিএ্যাকটিজগুলির সাথে কাজ করছি এবং জেএসওএন ডেটা (ফাইল বা সার্ভার থেকে) প্রদর্শন করার চেষ্টা করার সময় এই ত্রুটিটি রোধ করতে পারি না:
Uncaught TypeError: this.props.data.map is not a function
আমি তাকিয়েছি:
কোড নিক্ষেপ করে প্রতিক্রিয়া জানায় "টাইপরর: এটি.প্রপস.ডাটা.ম্যাপ কোনও ফাংশন নয়"
React.js this.prop.data.map () কোনও ফাংশন নয়
এগুলির কোনওটিই আমাকে সমস্যার সমাধান করতে সহায়তা করে নি। আমার পৃষ্ঠাটি লোড হওয়ার পরে, আমি যাচাই করতে পারি যে এই.ডাটা.পড়গুলি অপরিজ্ঞাত নয় (এবং এর সাথে জেএসওএন অবজেক্টের সমান একটি মান রয়েছে - যার সাথে কল করতে পারে window.foo), সুতরাং মনে হয় এটি যখন লোকেটিং করা হয় তখন এটি লোড হয় না like ConversationList। আমি কীভাবে নিশ্চিত করব যে mapপদ্ধতিটি কোনও undefinedচলক নয়, JSON ডেটাতে কাজ করছে ?
var converter = new Showdown.converter();
var Conversation = React.createClass({
render: function() {
var rawMarkup = converter.makeHtml(this.props.children.toString());
return (
<div className="conversation panel panel-default">
<div className="panel-heading">
<h3 className="panel-title">
{this.props.id}
{this.props.last_message_snippet}
{this.props.other_user_id}
</h3>
</div>
<div className="panel-body">
<span dangerouslySetInnerHTML={{__html: rawMarkup}} />
</div>
</div>
);
}
});
var ConversationList = React.createClass({
render: function() {
window.foo = this.props.data;
var conversationNodes = this.props.data.map(function(conversation, index) {
return (
<Conversation id={conversation.id} key={index}>
last_message_snippet={conversation.last_message_snippet}
other_user_id={conversation.other_user_id}
</Conversation>
);
});
return (
<div className="conversationList">
{conversationNodes}
</div>
);
}
});
var ConversationBox = React.createClass({
loadConversationsFromServer: function() {
return $.ajax({
url: this.props.url,
dataType: 'json',
success: function(data) {
this.setState({data: data});
}.bind(this),
error: function(xhr, status, err) {
console.error(this.props.url, status, err.toString());
}.bind(this)
});
},
getInitialState: function() {
return {data: []};
},
componentDidMount: function() {
this.loadConversationsFromServer();
setInterval(this.loadConversationsFromServer, this.props.pollInterval);
},
render: function() {
return (
<div className="conversationBox">
<h1>Conversations</h1>
<ConversationList data={this.state.data} />
</div>
);
}
});
$(document).on("page:change", function() {
var $content = $("#content");
if ($content.length > 0) {
React.render(
<ConversationBox url="/conversations.json" pollInterval={20000} />,
document.getElementById('content')
);
}
})
সম্পাদনা: নমুনা কথোপকথন.জসন যোগ করা
দ্রষ্টব্য - কলিং this.props.data.conversationsএকটি ত্রুটিও দেয়:
var conversationNodes = this.props.data.conversations.map...
নিম্নলিখিত ত্রুটি প্রদান করে:
আনকড টাইপ এরির: অপরিজ্ঞাতকৃত সম্পত্তি 'মানচিত্র' পড়তে পারে না
এখানে কথোপকথন.জসন:
{"user_has_unread_messages":false,"unread_messages_count":0,"conversations":[{"id":18768,"last_message_snippet":"Lorem ipsum","other_user_id":10193}]}