এই সম্পর্কে কি. আসুন একটি সহজ সহায়ক If
উপাদান সংজ্ঞায়িত করা যাক ।
var If = React.createClass({
render: function() {
if (this.props.test) {
return this.props.children;
}
else {
return false;
}
}
});
এবং এটি এইভাবে ব্যবহার করুন:
render: function () {
return (
<div id="page">
<If test={this.state.banner}>
<div id="banner">{this.state.banner}</div>
</If>
<div id="other-content">
blah blah blah...
</div>
</div>
);
}
আপডেট: আমার উত্তরটি জনপ্রিয় হওয়ার সাথে সাথে এই সমাধানের সাথে সম্পর্কিত সবচেয়ে বড় বিপদ সম্পর্কে আপনাকে সতর্ক করতে আমি বাধ্য বোধ করি। অন্য উত্তরে নির্দেশিত হিসাবে, <If />
উপাদানটি সত্য বা মিথ্যা কিনা তা বিবেচনা না করেই উপাদানটির অভ্যন্তরের কোডটি সর্বদা কার্যকর করা হয়। অতএব নিম্নলিখিত উদাহরণে ক্ষেত্রে ব্যর্থ হবে banner
হয় null
(দ্বিতীয় লাইনে সম্পত্তি এক্সেস নোট):
<If test={this.state.banner}>
<div id="banner">{this.state.banner.url}</div>
</If>
আপনি এটি ব্যবহার করার সময় আপনাকে যত্নবান হতে হবে। আমি বিকল্প (নিরাপদ) পদ্ধতির জন্য অন্যান্য উত্তরগুলি পড়ার পরামর্শ দিচ্ছি।
আপডেট 2: ফিরে তাকানো, এই পদ্ধতির না শুধুমাত্র বিপজ্জনক, কিন্তু মারাত্মক জটিল। এটির একটি আদর্শ উদাহরণ যখন কোনও বিকাশকারী (আমি) নিদর্শনগুলি স্থানান্তরিত করার চেষ্টা করে এবং তিনি জানেন যে তিনি এক অঞ্চল থেকে অন্য অঞ্চলে জেনেছেন তবে এটি কার্যকরভাবে কাজ করে না (এই ক্ষেত্রে অন্যান্য টেম্পলেট ভাষা)।
আপনার যদি শর্তসাপেক্ষ উপাদান দরকার হয় তবে এটি করুন:
render: function () {
return (
<div id="page">
{this.state.banner &&
<div id="banner">{this.state.banner}</div>}
<div id="other-content">
blah blah blah...
</div>
</div>
);
}
আপনার যদি অন্য কোনও শাখার প্রয়োজন হয় তবে কেবল একটি টের্নারি অপারেটর ব্যবহার করুন:
{this.state.banner ?
<div id="banner">{this.state.banner}</div> :
<div>There is no banner!</div>
}
এটি আরও খাটো, আরও মার্জিত এবং নিরাপদ। আমি সব সময় এটি ব্যবহার। একমাত্র অসুবিধা হ'ল আপনি else if
সহজে শাখাটি করতে পারবেন না তবে এটি সাধারণত তেমন সাধারণ হয় না।
যাইহোক, জাভাস্ক্রিপ্টে যৌক্তিক অপারেটররা কীভাবে কাজ করে তার জন্য এটি সম্ভব ধন্যবাদ । লজিকাল অপারেটররা এমনকি এ জাতীয় ছোট কৌশলগুলিও অনুমতি দেয়:
<h3>{this.state.banner.title || 'Default banner title'}</h3>
else
শাখা না থাকে তবে কী কাজ করে? আমি জেএসএক্সের সাথে পরিচিত নই ...