اذهب إلى المحتوى
  • 0

أستخدام if - else في جملة return داخل مكون React؟

Adam Ebrahim

السؤال

هل توجد طريقة لعمل جملة if else  في داخل دالة render مثلًا بهذا الشكل:

render(){
    return (
        <div>
            if (this.props.found) {<h1>Some Content</h1>}
            else {<h1>Not Found<h1/>}
        </div>
    )
}

بالطبع الكود السابق لن يعمل، لكني أحاول عمل شيء كهذا بدلًا من عمل جملتين return واحدة في داخل if وواحدة في else بالشكل التالي:

render(){
  if (this.props.found) {
    return (
        <div>
            <h1>Some Content</h1>
        </div>
    )
  } else {
    return (
      <div>
      <h1>Not Found</h1>
      </div>
    )
  }
}

فهل هناك طريقة لفعل مثل الكود السابق ولكن من داخل جملة return نفسها لكي لا أكرر باقي الكود مرتين؟

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

يمكنك أن تستخدم  ternary operator وهي صيغة مبسطة لل if

condition ? true : false 

ولتطبيقها على المثال تكون كالآتي : 
 

render(){
  return(
    <div>
      <h1>{this.props.found ? 'Some Content' : 'Not Found'}</h1>
    </div>
  );
}

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

يوجد عدة طرق لإنجاز المطلوب مثلا:

تعريف دالة ضمن render ثم استدعائها في التابع return حيث تعيد هذه الدالة المكون المطلوب حسب شرط ما..

// ...

class App extends Component {
  // ...

  render() {
    let {isLoggedIn} = this.state;

    const renderAuthButton = () => {
      if (isLoggedIn) {
        return <button>Logout</button>;
      } else {
        return <button>Login</button>;
      }
    }

    return (
      <div className="App">
        <h1>
          This is a Demo showing several ways to implement Conditional Rendering in React.
        </h1>
        {renderAuthButton()}
      </div>
    );
  }
}

// ...

 

أو بطريقة مختصرة باستخدام المعامل الثلاثي:

حيث بعد اختبار الشرط سيتم إضافة المكون المناسب

  render() {
    let { isLoggedIn } = this.state;

    return (
      <div className="App">
        <h1>
          This is a Demo showing several ways to implement Conditional Rendering in React.
        </h1>
        {isLoggedIn ? <button>Logout</button> : <button>Login</button>}
      </div>
    );
  }
}

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

أجل يمكنك إستخدام الطريقة التاليه والتي تسمى ternary operator

{this.props.found? <h1>Some Content</h1> : <h1>Not Found<h1/>}

ففي حالة كان هناك props.found

سوف يتم عرض المكون الذي يحوي some content

وإلا فسيتم عرض المكون الذي يحتوي على Not Found

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

لا يمكنك استخدام if else داخل ال return لكن يمكنك استخدام ternary operator ولحسن الحظ ليس فقط يمكنك استخدامها لتحاكي if else بل ايضا if else if else وذلك عن طريق ربطها كسلسلة متتالية 

import React from 'react';

export default function test() {
  return false ? <h1>1</h1> : false ? <h2>2</h2> : true ? <h3>3</h3> : null;
}

المثال في الأعلى هو نفسه 

if (false) {
  return <h1>1</h1>;
} else if (false) {
  return <h2>2</h2>;
} else if (true) {
  return <h3>3h3</h3>;
} else {
  return null;
}

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

إذا أردت استخدام return واحدة فقط فالطريقة الوحيدة هي عبر استخدام ternary operator كما شرح الأخوة سابقا

اما إذا أردت استخدام if و else فيجب عليك استخدام أكثر من return واحدة

لكن إذا أردت استخدام nested ternay operator فسيكون الكود غير منظم وصعب القراءة ايضاً لهذا يفضل استخدام if و else لكود أكثر تنظيما وسهل القراءة

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...