জেএসএক্সে পূর্বাভাস প্রতিক্রিয়া


109

আমার একটি অবজেক্ট রয়েছে যা আমি REACT এর মাধ্যমে আউটপুট দিতে চাই

question = {
    text: "Is this a good question?",
    answers: [
       "Yes",
       "No",
       "I don't know"
    ]
} 

এবং আমার প্রতিক্রিয়া উপাদান (কাটা কাটা), অন্য উপাদান

class QuestionSet extends Component {
render(){ 
    <div className="container">
       <h1>{this.props.question.text}</h1>
       {this.props.question.answers.forEach(answer => {     
           console.log("Entered");  //This does ifre                       
           <Answer answer={answer} />   //THIS DOES NOT WORK 
        })}
}

export default QuestionSet;

যেমন আপনি উপরের স্নিপিট থেকে দেখতে পাচ্ছেন, আমি প্রপসগুলিতে অ্যারের উত্তরগুলি ব্যবহার করে উত্তর উপাদানটির একটি অ্যারে toোকানোর চেষ্টা করছি, এটি ক্ষতিকারক হয় তবে এইচটিএমএলে আউটপুট হয় না।

উত্তর:


213

আপনাকে এ্যালিমেন্টের একটি অ্যারে পাস করতে হবে jsx। সমস্যাটি হ'ল forEachকোনও কিছু ফেরত দেয় না (অর্থাত্ এটি ফিরে আসে undefined)। সুতরাং আরও ভাল ব্যবহার করুন mapকারণ এটি এর মতো একটি অ্যারে দেয়

class QuestionSet extends Component {
render(){ 
    <div className="container">
       <h1>{this.props.question.text}</h1>
       {this.props.question.answers.map((answer, i) => {     
           console.log("Entered");                 
           // Return the element. Also pass key     
           return (<Answer key={i} answer={answer} />) 
        })}
}

export default QuestionSet;

7
ভার্চুয়াল ডোম-এর জন্য কিছু হিসাবে কী হিসাবে var i ব্যবহার করা ভাল পছন্দ নয়।
ম্যাকান্নে

4
@ ম্যাকান্নেন প্রকৃতপক্ষে এটি উল্লেখ করার জন্য ধন্যবাদ। এখানে কেন একটি ভাল পোস্ট এর medium.com/@robinpokorny/...
cyberwombat

4
FWIW আপনি অন্যান্য ধরণের সংগ্রহগুলিতেও পাস করতে পারেন। আপনার কেবল তাদের তালিকাভুক্ত করা দরকার যাতে তারা কাজ করে .map()। উদাহরণস্বরূপ Object.keys(collection).map(key => ...এবং সুবিধার্থে কাজ করার জন্য একটি ভেরিয়েবল বরাদ্দ করুনcollection[key]
জন কাস্টার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.