প্রতিক্রিয়াতে উপাদানটি দেখান বা লুকান


531

আমি প্রথমবার React.js এর সাথে ঘোরাঘুরি করছি এবং ক্লিক ইভেন্টের মাধ্যমে কোনও পৃষ্ঠায় কোনও কিছু দেখানোর বা লুকানোর কোনও উপায় খুঁজে পাচ্ছি না। আমি পৃষ্ঠাটিতে অন্য কোনও লাইব্রেরি লোড করছি না, তাই আমি প্রতিক্রিয়ার লাইব্রেরিটি ব্যবহার করে কিছু নেটিভ উপায় খুঁজছি। আমার এখন পর্যন্ত যা আছে তাই এটি। ক্লিক ইভেন্টটি প্রবাহিত হওয়ার পরে আমি ফলাফলগুলি ডিভিটি দেখাতে চাই।

var Search= React.createClass({
    handleClick: function (event) {
        console.log(this.prop);
    },
    render: function () {
        return (
            <div className="date-range">
                <input type="submit" value="Search" onClick={this.handleClick} />
            </div>
        );
    }
});

var Results = React.createClass({
    render: function () {
        return (
            <div id="results" className="search-results">
                Some Results
            </div>
        );
    }
});

React.renderComponent(<Search /> , document.body);

11
স্বীকৃত মন্তব্যটি নেটিভ টেক ব্যবহার করে যা স্থানীয় স্তরে বিদ্যমান প্রযুক্তিগুলি আরও সহজে, দ্রুত এবং ভাগ করে নেওয়ার সাথে অন্যান্য ভাষা এবং গ্রন্থাগারগুলির সাথে করতে পারে। স্ট্যান্ডার্ড সিএসএস দিয়ে এটি পরিচালনা করা অবশ্যই আরও ভাল উত্তর।
জন হাগল্যান্ড

13
@ জোহানহজল্যান্ড, প্রতিক্রিয়া কাঠামো ব্যবহার করার সময় সর্বোত্তম উত্তর হ'ল গ্রহণযোগ্য উত্তর, সমস্ত প্রতিক্রিয়া শৈলীতে গিয়ে, ক্লিনআপ ফাংশন রয়েছে যা কিছু ক্ষেত্রে আপনার অবশ্যই করা উচিত। অন্ধকারে উপাদানগুলি লুকিয়ে রাখা ভাল অনুশীলন নয়। আপনি যদি স্টাফগুলি মিশ্রিত করেন তবে আপনি সমস্ত দেশীয় যা আরও ভাল যে কোনও কিছুর চেয়ে সবসময় দ্রুত faster
ক্লদিউ হোজদা

4
না, এটা আসলে না। সিএসএস পুনঃস্থাপন করতে প্রতিক্রিয়া ব্যবহার করা একটি খারাপ ধারণা।
জন হাগল্যান্ড 18

8
এছাড়াও, আপনি যা বলেছিলেন তার বিন্দুটি আপনি পুরোপুরি মিস করেছেন বলে মনে হয়েছে, যা শারীরিকভাবে অপসারণের জন্য প্রতিক্রিয়া ব্যবহার না করে উপাদানটি লুকিয়ে রাখতে এবং প্রদর্শন করতে সিএসএস ব্যবহার করা হয়েছিল। আপনি করতে পারেন লুকিয়ে রাখবেন তা ব্যবহার সিএসএস প্রতিক্রিয়া ব্যবহার এবং ঠিক যেমন সহজে উপাদান দেন: <div style = {{প্রদর্শন: this.props.example}} />।
জন হাগল্যান্ড 18

5
@ ক্লাউডিউহজদা অন্ধকারে লুকিয়ে থাকা উপাদানগুলি আসলে কিছুটা ক্ষেত্রে খুব ভাল অনুশীলন, আমি প্রতিক্রিয়াশীল নেভিগেশনের কথা ভাবছি, যেখানে সিএসএসের সাথে লুকিয়ে থাকা সত্ত্বেও আপনার লিঙ্কগুলির প্রয়োজন
টনি লেই

উত্তর:


543

প্রতিক্রিয়া 2020

ইন onClickকলব্যাক, কল রাষ্ট্র হুক এর অবস্থা আপডেট করতে সেটার ফাংশন এবং পুনরায় রেন্ডার:

const Search = () => {
  const [showResults, setShowResults] = React.useState(false)
  const onClick = () => setShowResults(true)
  return (
    <div>
      <input type="submit" value="Search" onClick={onClick} />
      { showResults ? <Results /> : null }
    </div>
  )
}

const Results = () => (
  <div id="results" className="search-results">
    Some Results
  </div>
)

ReactDOM.render(<Search />, document.querySelector("#container"))
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.13.1/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.13.1/umd/react-dom.production.min.js"></script>

<div id="container">
  <!-- This element's contents will be replaced with your component. -->
</div>

JSFiddle

প্রতিক্রিয়া 2014

কী হ'ল হ্যান্ডলারের সাহায্যে উপাদানটির স্থিতি আপডেট করা setState। রাষ্ট্রের পরিবর্তনগুলি প্রয়োগ করা হলে, renderনতুন রাষ্ট্রের সাথে পদ্ধতিটি আবার কল হয়:

var Search = React.createClass({
    getInitialState: function() {
        return { showResults: false };
    },
    onClick: function() {
        this.setState({ showResults: true });
    },
    render: function() {
        return (
            <div>
                <input type="submit" value="Search" onClick={this.onClick} />
                { this.state.showResults ? <Results /> : null }
            </div>
        );
    }
});

var Results = React.createClass({
    render: function() {
        return (
            <div id="results" className="search-results">
                Some Results
            </div>
        );
    }
});

ReactDOM.render( <Search /> , document.getElementById('container'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.6.2/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/15.6.2/react-dom.min.js"></script>

<div id="container">
  <!-- This element's contents will be replaced with your component. -->
</div>

JSFiddle


3
হ্যাঁ, রাজ্য বনাম প্রপস সম্পর্কে ভাল পয়েন্ট। এটি করার একটি আরও ভাল উপায় এখানে টিউটোরিয়ালের মতো হওয়া উচিত, যেখানে অনুসন্ধানের ভিতরে ফলাফলগুলি রাখার পরিবর্তে অনুসন্ধান বার এবং ফলাফলের টেবিলটি ভাইবোন হয়: facebook.github.io/react/docs/thinking-in-react.html
ডগলাস

53
অন্য উত্তরে উল্লিখিত হিসাবে, সন্নিবেশ / মুছে ফেলা সহজ বর্গ মাস্কিংয়ের চেয়ে অনেক ধীর।
জন হাগল্যান্ড 30'15

4
আমি মনে করি জনসের মন্তব্যগুলির পর্যালোচনা করা দরকার। আমি অভিযুক্ত উত্তরটি দিয়ে গিয়েছিলাম এবং এটি ছিল ঝরঝরে এবং 'অনুভব' এর মতো আরও প্রতিক্রিয়া। তবে আমি আনমাউন্টযুক্ত উপাদানগুলিতে প্রাথমিক অবস্থা এবং দরকারী কিছু সেট করতে অক্ষম। আমি পরিবর্তে জিনিসগুলি আড়াল করতে CSS ব্যবহার করছি at আনমাউন্ট করা উপাদানগুলিতে শ্রোতা নিঃশব্দে ব্যর্থ হবে এটি আজ আমার বড় সময় ক্ষতি করেছে।
অবতরণ করেছে

শৈলীর পরিবর্তন হলে (প্রদর্শন / আড়াল করার জন্য সেট করা হয়েছে) প্রতিক্রিয়াটি কি উপাদানটিকে পুনরায় রেন্ডার করবে !?
অ্যালেক্স

@ ডগলাস যদি আমি এটি মিস না করি তবে এইভাবে টগলিকে মূলটিতে ফিরে যেতে দেয় না। আমার ধারণা, ওপি এটি নাও চায় তবে আমি কীভাবে এটি অন্তর্ভুক্ত করতে পারি?
কীট

221
<style type="text/css">
    .hidden { display:none; }
</style>
render: function() {
    return (
      <div className={this.props.shouldHide ? 'hidden' : ''}>
        This will be hidden if you set <tt>props.shouldHide</tt> 
        to something truthy.
      </div>
    );
}

// or in more modern JS and stateless react
const Example = props => <div className={props.shouldHide}/>Hello</div>

12
ডগলাসের উত্তরের মতো শর্তসাপেক্ষে নালাকে ফেরা ভাল। এটি প্রতিক্রিয়াটিকে সম্পূর্ণভাবে ডম থেকে অপসারণ করতে দেয়। আপনার ক্ষেত্রে ডিভ এবং এর লিখিত সামগ্রীগুলি এখনও প্রদর্শিত হচ্ছে না ডম-এ রয়েছে। এটিতে পারফরম্যান্সের প্রভাব থাকতে পারে।
pmont

125
পারফরম্যান্সের প্রভাবগুলি কোনও ডোম উপাদান এটি লুকিয়ে রাখার এবং দেখানোর চেয়ে তুলনামূলকভাবে যুক্ত এবং মুছে ফেলার জন্য আরও খারাপ। আমি তার দৃষ্টিভঙ্গি এবং আমার মধ্যে পার্থক্য সম্পর্কে সচেতন এবং আমি বিশ্বাস করি যে আপনার এটি ঠিক ভুল হয়েছে। "পারফরম্যান্সের প্রভাবগুলি" সংজ্ঞায়িত করতে এবং তারপরে পরিমাপ করার জন্য দয়া করে সময় নেওয়ার বিষয়টি বিবেচনা করুন।
জন হাগল্যান্ড

6
"রিফ্লোগুলি অ্যাড / অপসারণের গ্যারান্টিযুক্ত" - একেবারে অবস্থানযুক্ত উপাদানগুলির সাথে নয়, যা বিখ্যাত এটির অবিশ্বাস্য পারফরম্যান্স অর্জন করে। তবে আপনি মেট্রিকগুলিতে একটি বৈধ পয়েন্ট করেন।
pm

9
এটির মূল্য কী, তার জন্য এখানে প্রতিক্রিয়াশীল ডক্সে এটি উল্লেখ করা হয়েছে: ফেসবুক.
ব্র্যাড পার্কস

85
সুতরাং আমি কেবল নাল বনাম ফিরে আসা পরীক্ষা করেছি 16 এটি নোড অপসারণের চেয়ে ক্লাস ব্যবহার করে উল্লেখযোগ্যভাবে দ্রুত।
জোনাথন রোউনি 29-15 '

120

এখানে টার্নারি অপারেটরের জন্য একটি বিকল্প বাক্য গঠন রয়েছে:

{ this.state.showMyComponent ? <MyComponent /> : null }

সমান:

{ this.state.showMyComponent && <MyComponent /> }

ঝোঁক কেন


সঙ্গে বিকল্প বাক্য গঠন display: 'none';

<MyComponent style={this.state.showMyComponent ? {} : { display: 'none' }} />

তবে, আপনি যদি অতিরিক্ত মাত্রায় ব্যবহার করেন তবে display: 'none'এটি ডোম দূষণের দিকে নিয়ে যায় এবং শেষ পর্যন্ত আপনার প্রয়োগকে ধীর করে দেয়।


সতর্কবাণী! 'ডাবল অ্যাম্পারস্যান্ড (&&)' পদ্ধতির ব্যবহার কেবলমাত্র বুলির মানগুলির জন্য। my this.state.myCompাংশ.leth && <MyComp घटक /> 0 0 রেন্ডার করবে, যদি মাইকম্পোনেন্টস খালি অ্যারে (উদাহরণস্বরূপ)
মেগা

57

এই আমার পদ্ধতির।

import React, { useState } from 'react';

function ToggleBox({ title, children }) {
  const [isOpened, setIsOpened] = useState(false);

  function toggle() {
    setIsOpened(wasOpened => !wasOpened);
  }

  return (
    <div className="box">
      <div className="boxTitle" onClick={toggle}>
        {title}
      </div>
      {isOpened && (
        <div className="boxContent">
          {children}
        </div>
      )}
    </div>
  );
}

উপরের কোডে, এটি অর্জনের জন্য, আমি এই জাতীয় কোড ব্যবহার করছি:

{opened && <SomeElement />}

এটি সত্য SomeElementহলেই রেন্ডার হবে opened। এটি জাভাস্ক্রিপ্ট যেভাবে যৌক্তিক অবস্থার সমাধান করে তার কারণেই এটি কাজ করে:

true && true && 2; // will output 2
true && false && 2; // will output false
true && 'some string'; // will output 'some string'
opened && <SomeElement />; // will output SomeElement if `opened` is true, will output false otherwise (and false will be ignored by react during rendering)
// be careful with 'falsy' values eg
const someValue = 0;
someValue && <SomeElement /> // will output 0, which will be rednered by react
// it'll be better to:
!!someValue && <SomeElement /> // will render nothing as we cast the value to boolean

সিএসএস 'ডিসপ্লে: কিছুই নয়' এর পরিবর্তে এই পদ্ধতির ব্যবহারের কারণগুলি;

  • সিএসএসের সাহায্যে কোনও উপাদান আড়াল করা 'সস্তা' হতে পারে - এরকম ক্ষেত্রে 'লুকানো' উপাদানটি এখনও প্রতিক্রিয়া বিশ্বে 'জীবিত' রয়েছে (এটি সম্ভবত এটি আরও ব্যয়বহুল করে তুলতে পারে)
    • এর অর্থ হ'ল যদি পিতামণ্ডলের উপাদানগুলির প্রপসগুলি (উদাহরণস্বরূপ <TabView>) পরিবর্তিত হয় - আপনি কেবল একটি ট্যাব দেখতে পান তবে সমস্ত 5 টি ট্যাব পুনরায় রেন্ডার হবে will
    • লুকানো উপাদানটির এখনও কিছু জীবনচক্র পদ্ধতি চলতে পারে - যেমন। এটি সার্ভার থেকে প্রতিটি আপডেটের পরেও কিছু ডেটা আনতে পারে এমনকি এটি দৃশ্যমান নয়
    • লুকানো উপাদান অ্যাপটিকে ক্র্যাশ করতে পারে যদি এটি কোনও ভুল ডেটা গ্রহণ করে। রাষ্ট্র আপডেট করার সময় অদৃশ্য নোডগুলি সম্পর্কে আপনি 'ভুলে যেতে' পারার কারণে এটি ঘটতে পারে
    • উপাদানটি দৃশ্যমান করার সময় আপনি ভুল করে ভুল 'প্রদর্শন' স্টাইল সেট করতে পারেন - যেমন। কিছু ডিভ ডিফল্টরূপে 'ডিসপ্লে: ফ্লেক্স' হয় তবে ভুলক্রমে আপনি 'ডিসপ্লে: ব্লক' সেট করে display: invisible ? 'block' : 'none'যা এর ফলে লেআউটটি ভেঙে যেতে পারে
    • ব্যবহার someBoolean && <SomeNode />করা বোঝার জন্য খুব সহজ এবং এর বিষয়ে যুক্তিযুক্ত বিশেষত যদি আপনার কিছু যুক্তি প্রদর্শনের সাথে সম্পর্কিত যুক্তি জটিল হয় না
    • অনেক ক্ষেত্রে, উপাদানটি পুনরায় প্রদর্শিত হলে আপনি 'পুনরায় সেট' করতে চান। যেমন। আপনার কাছে এমন একটি স্লাইডার থাকতে পারে যা আপনি প্রতিবার প্রদর্শিত হলে প্রাথমিক অবস্থানে সেট করতে চান। (যদি পূর্ববর্তী উপাদানটির অবস্থাটি গোপন করা হয়, এমনকি আইএমওটি বিরল থাকে তবে - যদি এই রাষ্ট্রটিকে অন্যভাবে স্মরণ করা জটিল হয় তবে আমি সিএসএস ব্যবহার করাকে বিবেচনা করব)

2
এটি একটি বড় উদাহরণ! একটি ছোট জিনিস, বক্সকন্টের শ্রেণি নাম হওয়া উচিত = "বক্সকন্টেন্ট"
ভেট্টি

5
সেখানে একটি বাগ অধিকার এখানে: this.setState({isOpened: !isOpened});। আপনি যখন রাষ্ট্রটি পরিবর্তন করেন তখন নিজেই রাষ্ট্রের উপর নির্ভর করবেন না। এখানে একটি ভাল উদাহরণ: reactjs.org/docs/… তাই এটি হওয়া উচিত : this.setState( s => ({isOpened: !s.isOpened}) ). সেটস্টেটের ভিতরে তীর ফাংশনটি নোট করুন।
আরকোল

আপনার কাছে কি কোনও উত্স / বেঞ্চমার্ক / উদাহরণ রয়েছে যা নিশ্চিত করে "যদি আপনি প্রদর্শনটি সেট করেন: কোনও কিছুই নেই - উপাদানটি এখনও প্রতিক্রিয়া দ্বারা রেন্ডার হয় এবং ডম-এ যুক্ত হয় - যা কার্য সম্পাদনে খারাপ প্রভাব ফেলতে পারে।" ?
নিউয়া

@neiya আমি না সিএসএস ছোট উপাদানগুলির সাথে আরও পারফরম্যান্সযুক্ত হতে পারে তবে বেশিরভাগ ক্ষেত্রে আপনি সামগ্রীতে যেমন contentচ্ছিকভাবে বড় অংশ রেন্ডার করতে চান। ট্যাব। এছাড়াও, কিছু উপাদান সিএসএসের সাথে লুকানো থাকা অবস্থায় - এটি এখনও প্রতিক্রিয়া বিশ্বে জীবিত। এর অর্থ এই যে এটি তার রাষ্ট্র আপডেট করতে পারে, কিছু ডেটা আনতে পারে যা ব্যয়বহুল হতে পারে এবং অপ্রত্যাশিত আচরণের দিকে পরিচালিত করে। এবং এটি বাস্তবায়ন করা আইএমও আসলে খুব সহজ।
পাই

17

নতুন সংস্করণটি 0.11 এর প্রতিক্রিয়া সহ আপনি কোনও কন্টেন্ট রেন্ডার না করে কেবল নালার দিকে ফিরে আসতে পারেন।

শূন্য রেন্ডারিং


11

আমি একটি ছোট উপাদান তৈরি করেছি যা এটি আপনার জন্য পরিচালনা করে: প্রতিক্রিয়া-টগল-প্রদর্শন

এটি প্রস বা প্রপসের display: none !importantভিত্তিতে শৈলীর বৈশিষ্ট্য নির্ধারণ করে ।hideshow

ব্যবহারের উদাহরণ:

var ToggleDisplay = require('react-toggle-display');

var Search = React.createClass({
    getInitialState: function() {
        return { showResults: false };
    },
    onClick: function() {
        this.setState({ showResults: true });
    },
    render: function() {
        return (
            <div>
                <input type="submit" value="Search" onClick={this.onClick} />
                <ToggleDisplay show={this.state.showResults}>
                    <Results />
                </ToggleDisplay>
            </div>
        );
    }
});

var Results = React.createClass({
    render: function() {
        return (
            <div id="results" className="search-results">
                Some Results
            </div>
        );
    }
});

React.renderComponent(<Search />, document.body);

10

ইতিমধ্যে বেশ কয়েকটি দুর্দান্ত উত্তর রয়েছে, তবে আমি মনে করি না যে সেগুলি খুব ভালভাবে ব্যাখ্যা করা হয়েছে এবং প্রদত্ত কয়েকটি পদ্ধতিতে কিছু গ্যাচ রয়েছে যা মানুষকে ট্রিপ করতে পারে। সুতরাং আমি তিনটি প্রধান উপায় (আরও একটি অফ-বিষয় বিকল্প) এটি করতে যাচ্ছি এবং ভাল এবং কনস ব্যাখ্যা করতে যাচ্ছি। আমি বেশিরভাগ ক্ষেত্রেই এটি লিখছি কারণ বিকল্প 1 টি প্রচুর প্রস্তাবিত ছিল এবং সঠিকভাবে ব্যবহার না করা হলে সেই বিকল্পটি নিয়ে প্রচুর সম্ভাব্য সমস্যা রয়েছে।

বিকল্প 1: পিতামাতায় শর্তাধীন রেন্ডারিং।

আমি এই পদ্ধতিটি পছন্দ করি না যদি না আপনি কেবলমাত্র একবারের উপাদানটি রেন্ডার করে সেখানে রেখে যান। সমস্যাটি হ'ল এটি যখনই আপনি দৃশ্যমানতা টগল করবেন তখন স্ক্র্যাচ থেকে উপাদান তৈরি করতে প্রতিক্রিয়া দেখাবে। উদাহরণ এখানে। লগআউটবটন বা লগইনবটন শর্তসাপেক্ষে প্যারেন্ট লগইনকন্ট্রোলটিতে রেন্ডার করা হচ্ছে। আপনি যদি এটি চালনা করেন তবে লক্ষ্য করবেন যে প্রতিটি বোতামে ক্লিক করে কনস্ট্রাক্টর কল পেতে চলেছে। https://codepen.io/Kelnor/pen/LzPdpN?editors=1111

class LoginControl extends React.Component {
  constructor(props) {
    super(props);
    this.handleLoginClick = this.handleLoginClick.bind(this);
    this.handleLogoutClick = this.handleLogoutClick.bind(this);
    this.state = {isLoggedIn: false};
  }

  handleLoginClick() {
    this.setState({isLoggedIn: true});
  }

  handleLogoutClick() {
    this.setState({isLoggedIn: false});
  }

  render() {
    const isLoggedIn = this.state.isLoggedIn;

    let button = null;
    if (isLoggedIn) {
      button = <LogoutButton onClick={this.handleLogoutClick} />;
    } else {
      button = <LoginButton onClick={this.handleLoginClick} />;
    }

    return (
      <div>
        <Greeting isLoggedIn={isLoggedIn} />
        {button}
      </div>
    );
  }
}

class LogoutButton extends React.Component{
  constructor(props, context){
    super(props, context)
    console.log('created logout button');
  }
  render(){
    return (
      <button onClick={this.props.onClick}>
        Logout
      </button>
    );
  }
}

class LoginButton extends React.Component{
  constructor(props, context){
    super(props, context)
    console.log('created login button');
  }
  render(){
    return (
      <button onClick={this.props.onClick}>
        Login
      </button>
    );
  }
}

function UserGreeting(props) {
  return <h1>Welcome back!</h1>;
}

function GuestGreeting(props) {
  return <h1>Please sign up.</h1>;
}

function Greeting(props) {
  const isLoggedIn = props.isLoggedIn;
  if (isLoggedIn) {
    return <UserGreeting />;
  }
  return <GuestGreeting />;
}

ReactDOM.render(
  <LoginControl />,
  document.getElementById('root')
);

স্ক্র্যাচ থেকে উপাদান তৈরি করতে এখন প্রতিক্রিয়া বেশ দ্রুত। তবে এটি তৈরি করার সময় আপনার কোডটি কল করতে হবে। সুতরাং যদি আপনার কনস্ট্রাক্টর, কম্পোনেন্টডিডমাউন্ট, রেন্ডার ইত্যাদি কোড ব্যয়বহুল হয়, তবে এটি উপাদানটি উল্লেখযোগ্যভাবে কমিয়ে দেবে। এর অর্থ হ'ল আপনি এটিকে রাষ্ট্রীয় উপাদানগুলির সাথে ব্যবহার করতে পারবেন না যেখানে আপনি চান যখন লুকানো থাকে তখন রাষ্ট্রটি সংরক্ষণ করা হয় (এবং প্রদর্শিত হলে পুনরুদ্ধার করা হয়।) এর একটি সুবিধা হ'ল লুকানো উপাদানটি নির্বাচিত হওয়া অবধি একেবারে তৈরি করা হয় নি। সুতরাং লুকানো উপাদানগুলি আপনার প্রাথমিক পৃষ্ঠার বোঝাটি বিলম্ব করবে না। এমনও ঘটনা ঘটতে পারে যেখানে আপনি টগল করা অবস্থায় পুনরায় সেট করতে একটি রাষ্ট্রীয় উপাদান চান। এই ক্ষেত্রে এটি আপনার সেরা বিকল্প।

বিকল্প 2: সন্তানের শর্তাধীন রেন্ডারিং

এটি একবারে উভয় উপাদান তৈরি করে। এরপরে শর্ট সার্কিটগুলি রেন্ডার কোডের বাকি অংশগুলি যদি উপাদানটি গোপন থাকে। আপনি দৃশ্যমান প্রপ ব্যবহার করে অন্যান্য পদ্ধতিতে অন্যান্য যুক্তিকেও শর্ট সার্কিট করতে পারেন। কোডপেন পৃষ্ঠায় কনসোল.লগটি লক্ষ্য করুন। https://codepen.io/Kelnor/pen/YrKaWZ?editors=0011

class LoginControl extends React.Component {
  constructor(props) {
    super(props);
    this.handleLoginClick = this.handleLoginClick.bind(this);
    this.handleLogoutClick = this.handleLogoutClick.bind(this);
    this.state = {isLoggedIn: false};
  }

  handleLoginClick() {
    this.setState({isLoggedIn: true});
  }

  handleLogoutClick() {
    this.setState({isLoggedIn: false});
  }

  render() {
    const isLoggedIn = this.state.isLoggedIn;
    return (
      <div>
        <Greeting isLoggedIn={isLoggedIn} />
        <LoginButton isLoggedIn={isLoggedIn} onClick={this.handleLoginClick}/>
        <LogoutButton isLoggedIn={isLoggedIn} onClick={this.handleLogoutClick}/>
      </div>
    );
  }
}

class LogoutButton extends React.Component{
  constructor(props, context){
    super(props, context)
    console.log('created logout button');
  }
  render(){
    if(!this.props.isLoggedIn){
      return null;
    }
    return (
      <button onClick={this.props.onClick}>
        Logout
      </button>
    );
  }
}

class LoginButton extends React.Component{
  constructor(props, context){
    super(props, context)
    console.log('created login button');
  }
  render(){
    if(this.props.isLoggedIn){
      return null;
    }
    return (
      <button onClick={this.props.onClick}>
        Login
      </button>
    );
  }
}

function UserGreeting(props) {
  return <h1>Welcome back!</h1>;
}

function GuestGreeting(props) {
  return <h1>Please sign up.</h1>;
}

function Greeting(props) {
  const isLoggedIn = props.isLoggedIn;
  if (isLoggedIn) {
    return <UserGreeting />;
  }
  return <GuestGreeting />;
}

ReactDOM.render(
  <LoginControl />,
  document.getElementById('root')
);

এখন, যদি আরম্ভের যুক্তি দ্রুত হয় এবং শিশুরা রাষ্ট্রহীন হয়, তবে আপনি কর্মক্ষমতা বা কার্যকারিতার মধ্যে কোনও পার্থক্য দেখতে পাবেন না। যাইহোক, কেন প্রতিক্রিয়া যেভাবেই হোক প্রতিটি টগল একেবারে নতুন উপাদান তৈরি করুন? প্রারম্ভিককরণটি ব্যয়বহুল হলেও, বিকল্পটি 1 প্রতিবার আপনি যখন কোনও উপাদান টগল করবেন এটি চালিত হবে যা স্যুইচ করার সময় পৃষ্ঠাটি ধীর করে দেবে। বিকল্প 2 প্রথম পৃষ্ঠার লোডে উপাদানটির সমস্ত ইনসাইট চালাবে। প্রথম লোডটি ধীর করা হচ্ছে। আবার নোট করা উচিত। আপনি যদি শর্তের ভিত্তিতে কেবল একবারের উপাদানটি প্রদর্শন করছেন এবং এটি টগলিং করছেন না, বা আপনি টগল্লেড করার সময় এটি পুনরায় সেট করতে চান, তবে বিকল্প 1 সঠিক এবং সম্ভবত সেরা বিকল্প।

ধীর পৃষ্ঠার লোড যদি কোনও সমস্যা হয় তবে এর অর্থ আপনি একটি জীবনকালীন পদ্ধতিতে ব্যয়বহুল কোড পেয়েছেন এবং এটি সাধারণত ভাল ধারণা নয়। আপনি, এবং সম্ভবত, জীবনচক্র পদ্ধতিগুলি থেকে ব্যয়বহুল কোডটি সরিয়ে ধীর পৃষ্ঠার লোডটি সমাধান করতে পারেন। কম্পোনেন্টডিডমাউন্ট দ্বারা লাথি মেরে এমন একটি অ্যাসিঙ্ক ফাংশন এ নিয়ে যান এবং কলব্যাকটি সেট স্টেট () সহ একটি স্টেট ভেরিয়েবলে রেখে দিন। যদি রাষ্ট্রের পরিবর্তনশীল নাল হয় এবং উপাদানটি দৃশ্যমান হয় তবে রেন্ডার ফাংশনটি কোনও স্থানধারককে রিটার্ন করুন। অন্যথায় ডেটা রেন্ডার করুন। এই পৃষ্ঠাটি লোড হওয়ার সাথে সাথে ট্যাবগুলি দ্রুত লোড হবে এবং ট্যাবগুলি পপুলেট করবে। আপনি যুক্তিটিকে পিতামাতার মধ্যে সরাতে পারেন এবং ফলাফলগুলি প্রপস হিসাবে বাচ্চাদের কাছে ঠেলাতে পারেন। কোন ট্যাবটি প্রথমে লোড হবে তা আপনি অগ্রাধিকার দিতে পারেন। অথবা ফলাফলগুলি ক্যাশে করুন এবং প্রথম প্রথম কোনও উপাদান দেখানোর পরে যুক্তিটি চালান।

বিকল্প 3: ক্লাস লুকানো

ক্লাস হিডিং সম্ভবত প্রয়োগ করা সবচেয়ে সহজ। উল্লিখিত হিসাবে আপনি কেবল প্রদর্শন সহ একটি সিএসএস ক্লাস তৈরি করেছেন: কিছুই নেই এবং প্রপ উপর ভিত্তি করে ক্লাস বরাদ্দ করুন। ডাউনসাইড হ'ল প্রতিটি লুকানো উপাদানটির পুরো কোডটি বলা হয় এবং সমস্ত লুকানো উপাদান ডিওমের সাথে সংযুক্ত থাকে। (বিকল্প 1 গোপন উপাদানগুলি একেবারেই তৈরি করে না And অন্যান্য উত্তর কিন্তু আমি এর সাথে কথা বলতে পারি না।

বিকল্প 4: একটি উপাদান কিন্তু প্রপস পরিবর্তন। অথবা সম্ভবত কোনও উপাদান এবং ক্যাশে এইচটিএমএল নেই।

এইটি প্রতিটি অ্যাপ্লিকেশনের জন্য কাজ করবে না এবং এটি বিষয়বস্তু বন্ধ কারণ এটি উপাদানগুলি লুকানোর বিষয়ে নয়, তবে এটি লুকিয়ে রাখার চেয়ে কিছু ব্যবহারের ক্ষেত্রে সমাধানের চেয়ে ভাল সমাধান হতে পারে। বলুন আপনার ট্যাব রয়েছে। এটিতে একটি প্রতিক্রিয়া উপাদান লিখতে এবং ট্যাবটিতে যা প্রদর্শিত হয়েছে তা পরিবর্তনের জন্য প্রপসটি ব্যবহার করা সম্ভব হতে পারে। আপনি জেএসএক্সকে রাষ্ট্রীয় চলকগুলিতেও সংরক্ষণ করতে পারেন এবং কোন জেএসএক্স রেন্ডার ফাংশনে ফিরে আসবেন তা সিদ্ধান্ত নেওয়ার জন্য একটি প্রপ ব্যবহার করতে পারেন। যদি জেএসএক্স তৈরি করতে হয় তবে এটি করুন এবং এটি পিতামাতায় ক্যাশে করুন এবং সঠিকটিকে প্রপস হিসাবে প্রেরণ করুন। বা সন্তানের মধ্যে জেনারেট করুন এবং এটিকে সন্তানের অবস্থায় ক্যাশে করুন এবং সক্রিয়টিকে নির্বাচন করতে প্রপস ব্যবহার করুন।


9

ভার্চুয়াল ডিওএম ব্যবহার করার জন্য এটি একটি দুর্দান্ত উপায় :

class Toggle extends React.Component {
  state = {
    show: true,
  }

  toggle = () => this.setState((currentState) => ({show: !currentState.show}));

  render() {
    return (
      <div>
        <button onClick={this.toggle}>
          toggle: {this.state.show ? 'show' : 'hide'}
        </button>    
        {this.state.show && <div>Hi there</div>}
      </div>
     );
  }
}

উদাহরণ এখানে

প্রতিক্রিয়া হুক ব্যবহার করে:

const Toggle = () => {
  const [show, toggleShow] = React.useState(true);

  return (
    <div>
      <button
        onClick={() => toggleShow(!show)}
      >
        toggle: {show ? 'show' : 'hide'}
      </button>    
      {show && <div>Hi there</div>}
    </div>
  )
}

উদাহরণ এখানে


আমি এই পাতলা উত্তর পছন্দ। মম खेদ চলবে না।
হুয়ান লানাস

পূর্বের উত্তরে যেমন উল্লেখ করা হয়েছে, আপনার রাষ্ট্রের উপর নির্ভর করাthis.setState() উচিত নয়
ড্যান ড্যাসকলেসকু

8

আপনি রাজ্যে একটি বুলিয়ান মান সেট করে (যেমন 'শো)' এবং তারপরে:

var style = {};
if (!this.state.show) {
  style.display = 'none'
}

return <div style={style}>...</div>

আমি এটি চেষ্টা করেছিলাম, তবে ক্লিক ইভেন্টটি ব্লক প্রদর্শন করতে CSS তে স্যুইচ করেনি। কীভাবে এটি সম্পাদন করা যায় তা সম্পর্কে আমি হারিয়ে গেছি। কোন অতিরিক্ত টিপস?
ব্যবহারকারী 1725382

1
এটি শৈলীর নিয়ম সারণিতে সক্রিয় পরিবর্তনগুলি জড়িত। আপনি চালু এবং বন্ধ করতে পারেন এমন একক বিদ্যমান নিয়ম থাকা আরও অনেক ভাল, যা ডোম নোডের গতিশীল বৈশিষ্ট্যের অংশ নয়।
জন হাগল্যান্ড

1
আপনি এখানে কোনও শ্রেণি বা শৈলী ব্যবহার করেন কিনা তা আসলেই কিছু যায় আসে না ... আপনি এই সম্পর্কে খুব বেশি পরিশ্রম করেছেন বলে মনে হয়।
ব্রিগেন্ড

2
একটি ক্লাস ব্যবহার করা কয়েক মাপের আদেশের দ্বারা দ্রুত হয়। এটা জানা ভালো.
জেসন রাইস

1
স্রেফ শর্তসাপেক্ষ শ্রেণীর নামগুলি ব্যবহার করতে পারলাম
backdesk

7

ডকুমেন্টেশন অনুসারে সেরা অনুশীলন নীচে:

{this.state.showFooter && <Footer />}

রাষ্ট্রটি বৈধ হলেই উপাদানটিকে রেন্ডার করুন।


এই উত্তরটি ইতিমধ্যে এক বছর আগে দেওয়া হয়েছিল, সুতরাং এটি এখন মুছে ফেলা ঠিক OK
ড্যান ড্যাসকলেসকু

5
class Toggle extends React.Component {
  state = {
    show: true,
  }

  render() {
    const {show} = this.state;
    return (
      <div>
        <button onClick={()=> this.setState({show: !show })}>
          toggle: {show ? 'show' : 'hide'}
        </button>    
        {show && <div>Hi there</div>}
      </div>
     );
  }
}

4
   class FormPage extends React.Component{
      constructor(props){
           super(props);
           this.state = {
             hidediv: false
           }
      }

     handleClick = (){
       this.setState({
          hidediv: true
        });
      }

      render(){
        return(
        <div>
          <div className="date-range" hidden = {this.state.hidediv}>
               <input type="submit" value="Search" onClick={this.handleClick} />
          </div>
          <div id="results" className="search-results" hidden = {!this.state.hidediv}>
                        Some Results
           </div>
        </div>
        );
      }
  }

4

আমি প্রতিক্রিয়া দল থেকে এই বিবৃতি দিয়ে শুরু:

প্রতিক্রিয়াতে, আপনি স্বতন্ত্র উপাদান তৈরি করতে পারেন যা আপনার প্রয়োজনীয় আচরণকে সজ্জিত করে। তারপরে, আপনি আপনার প্রয়োগের অবস্থার উপর নির্ভর করে কেবলমাত্র কয়েকটি রেন্ডার করতে পারেন।

প্রতিক্রিয়ায় শর্তাধীন রেন্ডারিং জাভাস্ক্রিপ্টে শর্তগুলি একইভাবে কাজ করে। বর্তমান অবস্থার প্রতিনিধিত্বকারী উপাদানগুলি তৈরি করতে জাভাস্ক্রিপ্ট অপারেটরগুলি ব্যবহার করুন বা শর্তসাপেক্ষ অপারেটর ব্যবহার করুন এবং সেগুলি মেলে UI আপডেট করুন।

বোতামটি ক্লিক করার পরে আপনাকে মূলত উপাদানটি দেখাতে হবে, খাঁটি প্রতিক্রিয়া ব্যবহার করে বা সিএসএস ব্যবহার করে খাঁটি প্রতিক্রিয়া উপায়ে ব্যবহার করে আপনি এটি দুটি উপায়ে করতে পারেন, সুতরাং প্রথম ক্ষেত্রে, ফলাফলগুলি দেখাচ্ছে না হয় hideResultsহল true, কিন্তু বোতাম, রাষ্ট্র করত পরিবর্তনের উপর ক্লিক করে এবং hideResultsহয় falseএবং কম্পোনেন্ট নতুন মান অবস্থার সঙ্গে আবার অনুষ্ঠিত করুন, এই উপাদানটি দৃশ্য পরিবর্তন প্রতিক্রিয়া খুব সাধারণ ব্যবহার হচ্ছে ...

var Search = React.createClass({
  getInitialState: function() {
    return { hideResults: true };
  },

  handleClick: function() {
    this.setState({ hideResults: false });
  },

  render: function() {
    return (
      <div>
        <input type="submit" value="Search" onClick={this.handleClick} />
        { !this.state.hideResults && <Results /> }
      </div> );
  }

});

var Results = React.createClass({
  render: function() {
    return (
    <div id="results" className="search-results">
      Some Results
    </div>);
   }
});

ReactDOM.render(<Search />, document.body);

আপনি যদি প্রতিক্রিয়ার শর্তাধীন রেন্ডারিংয়ে আরও গবেষণা করতে চান তবে এখানে একবার দেখুন ।


1
এটি সবচেয়ে মার্জিত উপায় হতে হবে!
পঞ্চম

4

রিঅ্যাক্ট হুকের সাথে সরল আড়াল / শো উদাহরণ: (কোনও ফিডাল সম্পর্কে শ্রোতা)

const Example = () => {

  const [show, setShow] = useState(false);

  return (
    <div>
      <p>Show state: {show}</p>
      {show ? (
        <p>You can see me!</p>
      ) : null}
      <button onClick={() => setShow(!show)}>
    </div>
  );

};

export default Example;

2
এটি কেবল to শোতে সহজ হতে পারে? 1: 2}
পাইওটার Janak

3

আপনি যদি দেখতে চান যে কীভাবে এই উপাদানটিকে চেকআউট করার জন্য কোনও উপাদান প্রদর্শন করা যায়।

http://jsfiddle.net/mnoster/kb3gN/16387/

var Search = React.createClass({
    getInitialState: function() {
        return { 
            shouldHide:false
        };
    },
    onClick: function() {
        console.log("onclick");
        if(!this.state.shouldHide){
            this.setState({
                shouldHide: true 
            })
        }else{
                    this.setState({
                shouldHide: false 
            })
        }
    },
render: function() {
    return (
      <div>
        <button onClick={this.onClick}>click me</button>
        <p className={this.state.shouldHide ? 'hidden' : ''} >yoyoyoyoyo</p>
      </div>
    );
}
});

ReactDOM.render( <Search /> , document.getElementById('container'));

3

হুক্স ব্যবহার করে প্রতিক্রিয়াগুলিতে উপাদানগুলি দেখানোর / আড়াল করার একটি সহজ পদ্ধতি

const [showText, setShowText] = useState(false);

এখন, আসুন আমাদের রেন্ডার পদ্ধতিতে কিছু যুক্তি যুক্ত করুন:

{showText && <div>This text will show!</div>}

এবং

onClick={() => setShowText(!showText)}

ভাল করেছ.


2

কিছু ক্ষেত্রে উচ্চতর অর্ডার উপাদান কার্যকর হতে পারে:

উচ্চতর অর্ডার উপাদান তৈরি করুন:

export var HidableComponent = (ComposedComponent) => class extends React.Component {
    render() {
        if ((this.props.shouldHide!=null && this.props.shouldHide()) || this.props.hidden)
            return null;
        return <ComposedComponent {...this.props}  />;
    }
};

আপনার নিজস্ব উপাদান বাড়ান:

export const MyComp= HidableComponent(MyCompBasic);

তারপরে আপনি এটি ব্যবহার করতে পারেন:

<MyComp hidden={true} ... />
<MyComp shouldHide={this.props.useSomeFunctionHere} ... />

এটি কিছুটা বয়লারপ্লেট হ্রাস করে এবং নামকরণের সম্মেলনে লেগে থাকা প্রয়োগ করে, তবে দয়া করে সচেতন থাকুন যে মাইকম্পটি ততক্ষণে ইনস্ট্যান্ট করা হবে - বাদ দেওয়ার উপায়টি আগে উল্লেখ করা হয়েছিল:

{ !hidden && <MyComp ... /> }


1

আরসি-যদি-অন্য মডিউলটি ব্যবহার করুন

npm install --save rc-if-else
import React from 'react';
import { If } from 'rc-if-else';

class App extends React.Component {
    render() {
        return (
            <If condition={this.props.showResult}>
                Some Results
            </If>
        );
    }
}

1

সিএসএস ব্যবহার করে রেফ এবং হেরফের করুন

একটি উপায় refব্রাউজারের এপিআই ব্যবহার করে প্রতিক্রিয়া ব্যবহার এবং সিএসএস বর্গ ব্যবহার করতে পারে । এর উপকারটি হ'ল প্রতিক্রিয়াটি পুনরায় সরবরাহ করা এড়ানো যদি একমাত্র উদ্দেশ্যটি কোনও বোতামের ক্লিকের উপর কোনও ডিওএম উপাদান লুকানো / দেখানো হয়।

// Parent.jsx
import React, { Component } from 'react'

export default class Parent extends Component {
    constructor () {    
        this.childContainer = React.createRef()
    }

    toggleChild = () => {
        this.childContainer.current.classList.toggle('hidden')
    }

    render () {
        return (
            ...

            <button onClick={this.toggleChild}>Toggle Child</button>
            <div ref={this.childContainer}>
                <SomeChildComponent/>
            </div>

            ...
        );
    }
}


// styles.css
.hidden {
    display: none;
}

PS আমি ভুল হলে আমাকে সংশোধন করুন। :)


কোডস্যান্ডবক্স.আইও উদাহরণ তৈরি করেছেন, এখানে: utgzx.csb.app , কোড কোডস্যান্ডবক্স.আইও
স্বেচ্ছায় /

0

আপনি যদি বুটস্ট্র্যাপ 4 ব্যবহার করেন তবে আপনি সেভাবে উপাদানটি আড়াল করতে পারেন

className={this.state.hideElement ? "invisible" : "visible"}

0

এটিও এর মতো অর্জন করা যায় (খুব সহজ উপায়)

 class app extends Component {
   state = {
     show: false
   };
 toggle= () => {
   var res = this.state.show;
   this.setState({ show: !res });
 };
render() {
  return(
   <button onClick={ this.toggle }> Toggle </button>
  {
    this.state.show ? (<div> HELLO </div>) : null
  }
   );
     }

Reactjs.org/docs/react-component.html#setstate এ "পূর্ববর্তী রাষ্ট্রের ভিত্তিতে রাষ্ট্র" নির্ধারণের বিষয়ে দয়া করে পড়ুন । এছাড়াও, শেষে ইন্ডেন্টেশন ঠিক করতে ভাল হবে।
ড্যান ড্যাসকলেসকু

0

এই উদাহরণটি দেখায় যে কীভাবে আপনি প্রতি 1 সেকেন্ডের পরে স্যুইচ করে একটি টগল ব্যবহার করে উপাদানগুলির মধ্যে পরিবর্তন করতে পারেন

import React ,{Fragment,Component} from "react";
import ReactDOM from "react-dom";

import "./styles.css";

const Component1 = () =>(
  <div>
    <img 
src="https://i.pinimg.com/originals/58/df/1d/58df1d8bf372ade04781b8d4b2549ee6.jpg" />
   </div>
)

const Component2 = () => {
  return (
    <div>
       <img 
src="http://www.chinabuddhismencyclopedia.com/en/images/thumb/2/2e/12ccse.jpg/250px- 
12ccse.jpg" />
  </div>
   )

 }

 class App extends Component {
   constructor(props) {
     super(props);
    this.state = { 
      toggleFlag:false
     }
   }
   timer=()=> {
    this.setState({toggleFlag:!this.state.toggleFlag})
  }
  componentDidMount() {
    setInterval(this.timer, 1000);
   }
  render(){
     let { toggleFlag} = this.state
    return (
      <Fragment>
        {toggleFlag ? <Component1 /> : <Component2 />}
       </Fragment>
    )
  }
}


const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);

অদ্ভুত চিত্রের URL টি কী? আপনি placeimg.com এর
ড্যান ড্যাসকলেসকু

0

এই পাতলা এবং সংক্ষিপ্ত বাক্য গঠন ব্যবহার করুন:

{ this.state.show && <MyCustomComponent /> }

এটি কীভাবে কাজ করে তা বোঝাতে আপনি আপনার পাতলা এবং সংক্ষিপ্ত বাক্য গঠনতে প্রসারিত করতে পারেন। ওহ অপেক্ষা করুন, এটি 3 বছর আগে একটি উত্তরে সম্পন্ন হয়েছিল । আপনার উত্তরটি আবার টেবিলে কী নিয়ে আসে?
ড্যান ড্যাসকলেসকু

0

উপাদানগুলি প্রদর্শন / আড়াল করার জন্য ক্লাসলেস প্রতিক্রিয়া উপাদানগুলির সাথে এখানে সহজ, কার্যকর এবং সর্বোত্তম সমাধান উপস্থিত রয়েছে। প্রতিক্রিয়া-হুক ব্যবহার করুন যা সর্বশেষতম তৈরি-প্রতিক্রিয়া-অ্যাপ্লিকেশন প্রকল্পে পাওয়া যায় যা প্রতিক্রিয়া 16 ব্যবহার করে

import React, {useState} from 'react';
function RenderPara(){
const [showDetail,setShowDetail] = useState(false);

const handleToggle = () => setShowDetail(!showDetail);

return (
<React.Fragment>
    <h3>
        Hiding some stuffs 
    </h3>
    <button onClick={handleToggle}>Toggle View</button>
   {showDetail && <p>
        There are lot of other stuffs too
    </p>}
</React.Fragment>)

}  
export default RenderPara;

শুভ কোডিং :)


0
//use ternary condition

{ this.state.yourState ? <MyComponent /> : null } 

{ this.state.yourState && <MyComponent /> }

{ this.state.yourState == 'string' ? <MyComponent /> : ''}

{ this.state.yourState == 'string' && <MyComponent /> }

//Normal condition

if(this.state.yourState){
 return <MyComponent />
}else{
  return null;
}

-1

আপনি সিএসএস ফাইল ব্যবহার করতে পারেন

    var Results = React.createClass({
    render: function() {
        return (
            <div id="results" className={`search-results ${this.state.showResults ? 'show' : ''}`}>
                Some Results
            </div>
        );
    }
})

এবং সিএসএস ফাইল এ

    .search-results {
     ...
     display: none
     &.show {
      display: block
   }
}

-1
var Search= React.createClass({
 getInitialState: () => { showResults: false },
 onClick: () => this.setState({ showResults: true }),
 render: function () {
   const { showResults } = this.state;
   return (
     <div className="date-range">
       <input type="submit" value="Search" onClick={this.handleClick} />
       {showResults && <Results />}
     </div>
   );
 }
});

var Results = React.createClass({
    render: function () {
        return (
            <div id="results" className="search-results">
                Some Results
            </div>
        );
    }
});

React.renderComponent(<Search /> , document.body);

1
আপনি কী করেছিলেন তা ব্যাখ্যা করতে পারেন এবং কেন এটি উত্তরের চেয়ে উত্তম?
সেবলার

-1
class App extends React.Component {
  state = {
    show: true
  };

  showhide = () => {
    this.setState({ show: !this.state.show });
  };

  render() {
    return (
      <div className="App">
        {this.state.show && 
          <img src={logo} className="App-logo" alt="logo" />
        }
        <a onClick={this.showhide}>Show Hide</a>
      </div>
    );
  }
}

আপনি কি আরও ভাল বোঝার জন্য ব্যাখ্যা যোগ করতে পারেন? ধন্যবাদ!
শান্তেশ্বর ইন্দে

@ শান্তেশ্বর ইন্ডে: বর্তমান অবস্থার উপর নির্ভর করে সেটস্টেটের ভুল ব্যবহার সহ এটি পূর্ববর্তী উত্তর থেকে একই ধারণাটিকে নকল করে । Reactjs.org/docs/react-component.html#setstate দেখুন : "আপনার যদি পূর্ববর্তী অবস্থার উপর ভিত্তি করে রাষ্ট্রটি সেট করতে হয় তবে আপডেটের যুক্তি সম্পর্কে পড়ুন"।
ড্যান ড্যাসকলেসকু

-1

var Search = React.createClass({
    getInitialState: function() {
        return { showResults: false };
    },
    onClick: function() {
        this.setState({ showResults: true });
    },
    render: function() {
        return (
            <div>
                <input type="checkbox" value="Search" onClick={this.onClick} />
                { this.state.showResults ? <Results /> : null }
            </div>
        );
    }
});

var Results = React.createClass({
    render: function() {
        return (
            <div id="results" className="search-results">
                <input type="text" />
            </div>
        );
    }
});

ReactDOM.render( <Search /> , document.getElementById('container'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.6.2/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/15.6.2/react-dom.min.js"></script>

<div id="container">
  <!-- This element's contents will be replaced with your component. -->
</div>


4
এই কোডটি প্রশ্নের উত্তর দিতে পারে, কেন এবং / অথবা এই কোডটির প্রশ্নের উত্তর কীভাবে তার দীর্ঘমেয়াদী মানকে উন্নত করে সে সম্পর্কে অতিরিক্ত প্রসঙ্গ সরবরাহ করে।
xiawi

@ Xiawi কি বলেছে। এছাড়াও, দয়া করে আপনি ধ্রুবকগুলি ঘোষণা করার constপরিবর্তে ব্যবহার করুন var
ড্যান ড্যাসকলেসকু
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.