"এটি" মানচিত্র ফাংশন রিঅ্যাক্টজ-এর ভিতরে অপরিজ্ঞাত


101

আমি রিঅ্যাক্টজ নিয়ে কাজ করছি, মেনু উপাদান লিখছি।

"use strict";

var React = require("react");
var Menus = React.createClass({

    item_url: function (item,categories,articles) {
        console.log('afdasfasfasdfasdf');
        var url='XXX';
        if (item.type == 1) {
            url = item.categoryId == null ? 'javascript:void(0)' : path('buex_portal_browse_category', {slug: categories[item.categoryId].slug});
        } else if (item.type == 2) {
            url = item.articleId == null ? 'javascript:void(0)' : path('buex_portal_view_article', {slug: articles[item.articleId].slug, id: item.articleId});
        } else {
            url = item.url;
        }
        return url;
    },

    render: function () {
     //   console.log(this.props.menus);  // return correctly
            var menuElements = this.props.menus.map(function (item1) { // return fault : 'cannot read property 'props' of undefined '
            return (
                <div>
                    <li>
                        <a href={this.item_url(item1, this.props.categories, this.props.articles )}>{item1.name} // the same fault above
                            <i class="glyphicon glyphicon-chevron-right pull-right"></i>
                        </a>
                        <div class="sub-menu">
                            <div>
                            {item1._children.map(function (item2) {
                                return (
                                    <div>
                                        <h4>
                                            <a href={this.item_url(item2, this.props.categories, this.props.articles)}>{ item2.name }</a>
                                        </h4>
                                        <ul>
                                            {item2._children.map(function (item3) {
                                                return ( 
                                                    <div><li><a href={this.item_url(item3, this.props.categories, this.props.articles) }>{ item3.name }</a></li></div>
                                                );
                                            })}                   
                                        </ul>
                                    </div>
                                );
                            })}
                            </div>
                        </div>
                    </li>
                </div>
            );
        });

        return (
            <div class="menu">
                <ul class="nav nav-tabs nav-stacked">
                    {menuElements}
                </ul>
            </div>
        );
    }
});

আমি যখনই ম্যাপের ফাংশনের অভ্যন্তরে 'এটি' ব্যবহার করি এটি অনির্ধারিত হয় তবে এর বাইরে কোনও সমস্যা হয় না।

ভূল:

"অপরিজ্ঞাতকৃত সম্পত্তি 'প্রপস' পড়া যায় না"

কেউ আমাকে সাহায্য করুন! : ((


উত্তর:


308

Array.prototype.map()thisম্যাপিং ফাংশনটিতে যা বোঝায় সেট করতে দ্বিতীয় যুক্তি লাগে , সুতরাং thisবর্তমান প্রসঙ্গটি সংরক্ষণের জন্য দ্বিতীয় যুক্তি হিসাবে পাস করুন :

someList.map(function(item) {
  ...
}, this)

বিকল্পভাবে, আপনি বর্তমান প্রসঙ্গটি স্বয়ংক্রিয়ভাবে সংরক্ষণ করতে একটি ES6 তীর ফাংশন ব্যবহার করতে পারেন this:

someList.map((item) => {
  ...
})

আপনি এটির দ্বিতীয় যুক্তিটি পাস করার পরে, এর অর্থ কী এই বিশ্বব্যাপী বস্তুটির কাছে তা প্রকাশিত হয় এবং যদি হ্যাঁ, তা কেন?
ইউজান সানিক

23
হুঁ, কোনও কারণে আমি thisটাইপস্ক্রিপ্টের সাথে তীর ফাংশনটি ব্যবহার করার সময়ও আবদ্ধ হতে দেখছি না ।
লুকাস

1
প্রতিক্রিয়া ব্যবহার করে আমার সাথে লুকাসের মতো একই আচরণ রয়েছে। পুরানো ফ্যাশন ফাংশন সিনট্যাক্স যদিও আমার জন্য কাজ করে। কি অদ্ভুত.
মুনবুটস 89
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.