আমি কীভাবে উপাদানগুলিকে প্রতিক্রিয়াতে হুকের সাথে পুনরায় রেন্ডার করতে বাধ্য করব?


107

নীচে হুক উদাহরণ বিবেচনা

   import { useState } from 'react';

   function Example() {
       const [count, setCount] = useState(0);

       return (
           <div>
               <p>You clicked {count} times</p>
               <button onClick={() => setCount(count + 1)}>
                  Click me
               </button>
          </div>
        );
     }

মূলত আমরা নীচের উদাহরণের মতো শ্রেণীবদ্ধ উপাদানগুলিতে প্রতিক্রিয়াটি তত্ক্ষণাত উপাদানটিকে পুনরায় রেন্ডার করতে বাধ্য করার জন্য এটি.ফোর্স আপডেট () পদ্ধতিটি ব্যবহার করি example

    class Test extends Component{
        constructor(props){
             super(props);
             this.state = {
                 count:0,
                 count2: 100
             }
             this.setCount = this.setCount.bind(this);//how can I do this with hooks in functional component 
        }
        setCount(){
              let count = this.state.count;
                   count = count+1;
              let count2 = this.state.count2;
                   count2 = count2+1;
              this.setState({count});
              this.forceUpdate();
              //before below setState the component will re-render immediately when this.forceUpdate() is called
              this.setState({count2: count
        }

        render(){
              return (<div>
                   <span>Count: {this.state.count}></span>. 
                   <button onClick={this.setCount}></button>
                 </div>
        }
 }

তবে আমার জিজ্ঞাসা হ'ল আমি কীভাবে তাত্ক্ষণিকভাবে উপাদানগুলির উপরের অংশটিকে হুকগুলির সাথে সাথে পুনরায় রেন্ডার করতে বাধ্য করতে পারি?


4
আপনি কি আপনার মূল উপাদানটির একটি সংস্করণ পোস্ট করতে পারেন যা ব্যবহার করে this.forceUpdate()? সম্ভবত এটি ছাড়া এটি একই জিনিস সম্পাদনের একটি উপায় আছে।
জ্যাকব

সেটকাউন্টের শেষ লাইনটি কেটে গেছে। এটি বর্তমান রাষ্ট্রের সেটকাউন্টের উদ্দেশ্য কী তা পরিষ্কার নয়।
এস্টাস ফ্লাস্ক

এটি এটির পরে কেবলমাত্র একটি পদক্ষেপ force আমি যোগ করেছি যে কেবল এই সম্পর্কে ব্যাখ্যা করতে.আমার প্রশ্নে আপডেট ()
হেমাদ্রি

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

উত্তর:


74

এই সম্ভব useStateবা useReducer, যেহেতু useStateব্যবহার useReducerঅভ্যন্তরীণভাবে :

const [, updateState] = React.useState();
const forceUpdate = React.useCallback(() => updateState({}), []);

forceUpdateশুধুমাত্র সাধারণ পরীক্ষায় বা অন্যান্য বকেয়া ক্ষেত্রে ব্যবহার করা হয় না। এই পরিস্থিতিটি আরও প্রচলিত উপায়ে সমাধান করা যেতে পারে।

setCountউৎপন্ন ব্যবহৃত একটি উদাহরণ forceUpdate, setStateকর্মক্ষমতা কারণে অ্যাসিঙ্ক্রোনাস এবং সমকালীন হতে রাষ্ট্র আপডেট সঠিকভাবে সম্পন্ন করা হয় নি শুধু কারণ বাধ্য করা উচিত নয়। যদি কোনও রাজ্য পূর্ব নির্ধারিত রাজ্যের উপর নির্ভর করে তবে এটি আপডেটের ফাংশন দিয়ে করা উচিত ,

আপনি যদি পূর্ববর্তী রাজ্যের উপর ভিত্তি করে রাজ্যটি সেট করতে চান তবে নীচে আপডেটের যুক্তি সম্পর্কে পড়ুন।

<...>

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

setCount উদাহরণস্বরূপ উদাহরণ নাও হতে পারে কারণ এর উদ্দেশ্যটি অস্পষ্ট তবে এটি আপডেটেটার ফাংশনের ক্ষেত্রে:

setCount(){
  this.setState(({count}) => ({ count: count + 1 }));
  this.setState(({count2}) => ({ count2: count + 1 }));
  this.setState(({count}) => ({ count2: count + 1 }));
}

এটি হুকগুলিতে 1: 1 টি অনুবাদ করা হয়েছে, ব্যতিক্রম ব্যতীত কলব্যাক হিসাবে ব্যবহৃত ফাংশনগুলি আরও ভালভাবে স্মরণ করা উচিত:

   const [state, setState] = useState({ count: 0, count2: 100 });

   const setCount = useCallback(() => {
     setState(({count}) => ({ count: count + 1 }));
     setState(({count2}) => ({ count2: count + 1 }));
     setState(({count}) => ({ count2: count + 1 }));
   }, []);

কিভাবে const forceUpdate = useCallback(() => updateState({}), []);কাজ করে? এটি এমনকি একটি আপডেট জোর করে?
ডেভিড মোলনার

4
@ ডেভিডমোলনার useCallbackস্মৃতিচারণ করে forceUpdate, সুতরাং এটি উপাদান আজীবন চলাকালীন স্থির থাকে এবং নিরাপদে প্রপস হিসাবে পাস হতে পারে। updateState({})প্রতিটি forceUpdateকলটিতে নতুন অবজেক্টের সাথে রাষ্ট্র আপডেট করে , এর ফলে পুনরায় রেন্ডার হয়। সুতরাং হ্যাঁ, কল করার সময় এটি একটি আপডেটের জন্য বাধ্য করে।
এস্তাস ফ্লাস্ক

4
সুতরাং, useCallbackঅংশটি আসলে প্রয়োজনীয় নয়। এটি ছাড়া এটি ঠিক কাজ করা উচিত।
ডেভিড মোলনার 11

এবং এটি কাজ করবে না updateState(0)কারণ 0একটি আদিম ডাটা টাইপ? এটি কি কোনও বস্তু হতে হবে বা updateState([])(যেমন অ্যারের সাথে ব্যবহার) কাজ করবে?
আন্ড্রু

4
@ আন্ড্রু হ্যাঁ, একটি রাষ্ট্র একবার আপডেট হয়েছে কারণ 0 === 0। হ্যাঁ, একটি অ্যারে কাজ করবে কারণ এটিও একটি বস্তু। সাম্যতা চেক পাস না এমন যে কোনও কিছু ব্যবহার করা যেতে পারে, যেমন updateState(Math.random())বা কাউন্টার counter
এস্তাস ফ্লাস্ক

26

অন্যরা যেমন উল্লেখ করেছে, useStateকাজ করে - এখানে মোব্যাক্স-রিঅ্যাক্ট-লাইট আপডেটগুলি কীভাবে প্রয়োগ করে - আপনিও তেমন কিছু করতে পারেন।

একটি নতুন হুক সংজ্ঞায়িত করুন, useForceUpdate-

import { useState, useCallback } from 'react'

export function useForceUpdate() {
  const [, setTick] = useState(0);
  const update = useCallback(() => {
    setTick(tick => tick + 1);
  }, [])
  return update;
}

এবং এটি একটি উপাদান ব্যবহার -

const forceUpdate = useForceUpdate();
if (...) {
  forceUpdate(); // force re-render
}

দেখুন https://github.com/mobxjs/mobx-react-lite/blob/master/src/utils.ts এবং https://github.com/mobxjs/mobx-react-lite/blob/master/src/useObserver .ts


4
হুকগুলি থেকে আমি যা বুঝি তার থেকে এটি কাজ করতে পারে না কারণ useForceUpdateপ্রতিবার ফাংশনটি পুনরায় রেন্ডার করে একটি নতুন ফাংশন ফিরে আসবে। একটিতেforceUpdate ব্যবহৃত হওয়ার জন্য কাজ করার জন্য useEffect, এটি ফিরে আসতে হবে kentcdodds.com/blog/usememo- এবং-usecallbackuseCallback(update) দেখুন
মার্টিন র্যাটিনাড

ধন্যবাদ, @ মার্টিনরতিনাউড - হ্যাঁ, এটি ব্যবহার ছাড়াই মেমরি ফাঁস হতে পারে -?
ব্রায়ান বার্নস

23

সাধারণত, আপনি কোনও আপডেট ট্রিগার করতে চান এমন কোনও রাষ্ট্র পরিচালনার পদ্ধতি ব্যবহার করতে পারেন।

টাইপস্ক্রিপ্ট সহ

কোডস্যান্ডবক্স উদাহরণ

ইউজ স্টেট

const forceUpdate: () => void = React.useState()[1].bind(null, {})  // see NOTE below

ব্যবহারকারক

const forceUpdate = React.useReducer(() => ({}), {})[1] as () => void

কাস্টম হুক হিসাবে

আপনি যেভাবে পছন্দ পছন্দ করেন তা কেবল মোড়ানো করুন

function useForceUpdate(): () => void {
  return React.useReducer(() => ({}), {})[1] as () => void // <- paste here
}

এটি কিভাবে কাজ করে?

" একটি আপডেট ট্রিগার করা " এর অর্থ প্রতিক্রিয়া ইঞ্জিনকে বোঝানো যে কিছু মান পরিবর্তন হয়েছে এবং এটি আপনার উপাদানটি পুনরায় রেন্ডার করা উচিত।

[, setState]থেকে useState()একটি পরামিতি প্রয়োজন। আমরা তাজা বস্তুকে আবদ্ধ করে এ থেকে মুক্তি পাই {}
() => ({})ইন useReducerহ'ল একটি ডামি রিডিউসার যা প্রতিবার কোনও ক্রিয়া প্রেরণ করা হওয়ার সাথে সাথে একটি তাজা বস্তু ফেরত দেয়।
{} (তাজা বস্তু) প্রয়োজনীয় যাতে এটি রাজ্যে একটি রেফারেন্স পরিবর্তন করে একটি আপডেট ট্রিগার করে।

পিএস: useStateকেবল useReducerঅভ্যন্তরীণভাবে মোড়ানো । সূত্র

দ্রষ্টব্য: ইউজস্টেটের সাথে .bind ব্যবহারের ফলে রেন্ডারগুলির মধ্যে ফাংশন রেফারেন্সের পরিবর্তন ঘটে। এটা তোলে useCallback ভিতরে এটি মোড়ানো হিসেবে ইতিমধ্যে সম্ভব এখানে ব্যাখ্যা , কিন্তু তারপর এটি একটি হবে না সেক্সি এক-লাইনের ™ । Reducer সংস্করণ ইতিমধ্যে রেন্ডারদেরমধ্যে রেফারেন্স সমতা রাখে । যদি আপনি প্রপসগুলিতে ফোর্সআপ্টেট ফাংশনটি পাস করতে চান তবে এটি গুরুত্বপূর্ণ।

সরল জেএস

const forceUpdate = React.useState()[1].bind(null, {})  // see NOTE above
const forceUpdate = React.useReducer(() => ({}))[1]

14

@ মিনখার উত্তরের বিকল্প:

এটি এর সাথে আরও পরিষ্কার হতে পারে useReducer:

const [, forceUpdate] = useReducer(x => x + 1, 0);

ব্যবহার: forceUpdate()- প্যারাম ছাড়াই ক্লিনার


12

আপনি সহজেই এর মতো স্টেটটি সংজ্ঞায়িত করতে পারেন:

const [, forceUpdate] = React.useState(0);

এবং ব্যবহার: forceUpdate(n => !n)

এই সাহায্য আশা করি!


7
যদি জবরদস্তি প্রতি রেন্ডারকে এমনকি সংখ্যার বার বলা হয় তবে ব্যর্থ হবে।
ইজাকি

শুধু মান বাড়িয়েই রাখুন।
গ্যারি

4
এটি ত্রুটি-প্রবণ এবং অপসারণ বা সম্পাদনা করা উচিত।
পিছলে

10

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

উদাহরণ

const { useState, useEffect } = React;

function Foo() {
  const [, forceUpdate] = useState();

  useEffect(() => {
    setTimeout(forceUpdate, 2000);
  }, []);

  return <div>{Date.now()}</div>;
}

ReactDOM.render(<Foo />, document.getElementById("root"));
<script src="https://unpkg.com/react@16.7.0-alpha.0/umd/react.production.min.js"></script>
<script src="https://unpkg.com/react-dom@16.7.0-alpha.0/umd/react-dom.production.min.js"></script>

<div id="root"></div>


ঠিক আছে তবে কেন প্রতিক্রিয়া এটিকে প্রয়োগ করেছে force প্রথম স্থানে যখন উপাদানগুলি পূর্ববর্তী সংস্করণগুলিতে সেটস্টেট দিয়ে পুনরায় রেন্ডার করে?
হেমাদ্রি দাসারী

4
@ থিংক-দু'বার আমি ব্যক্তিগতভাবে এটি কখনও ব্যবহার করি নি, এবং এখনই আমি এটির জন্য ভাল ব্যবহারের ক্ষেত্রে ভাবতে পারি না, তবে আমি অনুমান করি যে এটি সত্যিই বিশেষ ব্যবহারের ক্ষেত্রে এড়াতে সক্ষম। "সাধারণত তোমাদের সকলের ব্যবহারের এড়াতে চেষ্টা করা উচিত forceUpdate()এবং শুধুমাত্র থেকে পড়া this.propsএবং this.stateমধ্যে render()।"
থোলে

4
রাজি। আমি এমনকি এটি আমার অভিজ্ঞতায় কখনও ব্যবহার করি নি তবে আমি জানি এটি কীভাবে কাজ করে ঠিক কীভাবে একই জিনিস
হুকসে

4
@ থোল and I can't think of a good use case for it right now আমার কাছে আছে, রাষ্ট্র যদি প্রতিক্রিয়া দ্বারা নিয়ন্ত্রিত না হয় তবে কীভাবে হয়। আমি রেডাক্স ব্যবহার করি না, তবে আমি ধরে নিচ্ছি এটি অবশ্যই একরকম ফোর্সআপেট করতে হবে। আমি রাজ্য বজায় রাখতে ব্যক্তিগতভাবে প্রক্সি ব্যবহার করি, উপাদানটি তখন প্রোপ পরিবর্তনগুলি পরীক্ষা করে তারপরে আপডেট করতে পারে। খুব দক্ষতার সাথে কাজ করার কথা মনে হচ্ছে। উদাহরণস্বরূপ, আমার সমস্ত উপাদানগুলি তখন একটি প্রক্সি দ্বারা নিয়ন্ত্রিত হয়, এই প্রক্সিটি সেশনসটোরেজ দ্বারা সমর্থিত হয়, তাই এমনকি যদি ব্যবহারকারী তার ওয়েবপৃষ্ঠাটি রিফ্রেশ করে এমনকি এমনকি ড্রপডাউনগুলির অবস্থাও বজায় থাকে তবে। আইওউ: আমি রাজ্যটি মোটেও ব্যবহার করি না, প্রপস দিয়ে সবকিছু নিয়ন্ত্রণ করা হয়।
কিথ

8

প্রতিক্রিয়া হুক এফএকিউ এর জন্য সরকারী সমাধান forceUpdate:

const [_, forceUpdate] = useReducer((x) => x + 1, 0);
// usage
<button onClick={forceUpdate}>Force update</button>

কাজের উদাহরণ



5

প্রতিক্রিয়া জেএসএক্স কোডে বুলিয়ানগুলি মুদ্রণ করে না এই সত্যটির সুযোগ নিয়ে আপনি (আব) সাধারণ হুক ব্যবহার করতে পারেন

// create a hook
const [forceRerender, setForceRerender] = React.useState(true);

// ...put this line where you want to force a rerender
setForceRerender(!forceRerender);

// ...make sure that {forceRerender} is "visible" in your js code
// ({forceRerender} will not actually be visible since booleans are
// not printed, but updating its value will nonetheless force a
// rerender)
return (
  <div>{forceRerender}</div>
)


4
এই ক্ষেত্রে, যখন সেটবুলিয়ান দু'বার বাচ্চাদের পরিবর্তন করে Re
আলমা

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

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

4

সম্ভাব্য বিকল্পটি কেবলমাত্র নির্দিষ্ট উপাদান ব্যবহার করে জোর করে আপডেট করা key। কী ট্রিগার আপডেট করে উপাদানটির একটি রেন্ডারিং (যা আগে আপডেট করতে ব্যর্থ হয়েছিল)

উদাহরণ স্বরূপ:

const [tableKey, setTableKey] = useState(1);
...

useEffect(() => {
    ...
    setTableKey(tableKey + 1);
}, [tableData]);

...
<DataTable
    key={tableKey}
    data={tableData}/>

4
রাষ্ট্রীয় মূল্য এবং পুনরায় রেন্ডার করার প্রয়োজনের মধ্যে যদি 1: 1 সম্পর্ক থাকে তবে এটি প্রায়শই পরিষ্কার উপায়।
jaimefps

4
এটি একটি সহজ সমাধান
প্রিয়াঙ্কা ভি


3

একটি লাইন সমাধান:

const useForceUpdate = () => useState()[1];

UseState মানগুলির একটি জুটি প্রদান করে: বর্তমান অবস্থা এবং এটি আপডেট করে এমন একটি ফাংশন - রাষ্ট্র এবং সেটটার , এখানে আমরা পুনরায় রেন্ডার করতে বাধ্য করার জন্য কেবলমাত্র সেটার ব্যবহার করছি।


2

আমার প্রকরণ forceUpdateএকটি মাধ্যমে নয় counterবরং একটি বস্তু মাধ্যমে:

// Emulates `forceUpdate()`
const [unusedState, setUnusedState] = useState()
const forceUpdate = useCallback(() => setUnusedState({}), [])

কারণ {} !== {}প্রতিবার।


কী useCallback()? যে কোথা থেকে এসেছে? উফ! আমি এখন এটি দেখতে পাচ্ছি ...
২:

2

এটি নির্ভর করে উপাদানগুলি 3 বার রেন্ডার করবে (সমান উপাদানগুলির সাথে অ্যারে সমান নয়):

const [msg, setMsg] = useState([""])

setMsg(["test"])
setMsg(["test"])
setMsg(["test"])

4
আমি বিশ্বাস করি আপনার অ্যারেতে কোনও জিনিস রাখার দরকার নেই। একটি খালি অ্যারে কেবলমাত্র বস্তুর মতো আলাদা আলাদা রেফারেন্স দ্বারা অন্য খালি অ্যারের সাথে কঠোরভাবে সমান হয় না।
কিওয়ার্টি

হ্যাঁ, কেবল তথ্যটি পাস করার উপায় হিসাবে এটি দেখাতে চেয়েছিলেন
জেনেক ওলসাক

1

নিয়মিত প্রতিক্রিয়া শ্রেণিভিত্তিক উপাদানগুলির জন্য, এই URL forceUpdateএ এপিআইয়ের জন্য প্রতিক্রিয়া ডক্সকে দেখুন refer দস্তাবেজগুলি উল্লেখ করেছে:

সাধারণত আপনার ফোর্স আপডেট () এর সমস্ত ব্যবহার এড়াতে চেষ্টা করা উচিত এবং কেবল এটি থেকে পড়া উচিত rops

তবে এটি ডক্সেও উল্লেখ করা হয়েছে যে:

যদি আপনার রেন্ডার () পদ্ধতিটি অন্য কোনও ডেটার উপর নির্ভর করে, আপনি প্রতিক্রিয়াটি বলতে পারেন যে ফোর্সআপেড () কল করে উপাদানটির পুনরায় রেন্ডারিং দরকার।

সুতরাং, যদিও ব্যবহারের ক্ষেত্রে ব্যবহারের ঘটনা forceUpdateবিরল হতে পারে, এবং আমি এটি কখনও ব্যবহার করি নি, তবে আমি এটি দেখেছি যে আমি অন্য কয়েকটি বিকাশকারী কর্পোরেট প্রকল্পগুলিতে কাজ করেছি যা অন্যান্য কর্পোরেট প্রকল্পগুলিতে এটি ব্যবহার করেছে।

সুতরাং, কার্যকরী উপাদানগুলির সমতুল্য কার্যকারিতার জন্য, এই ইউআরএলে HOOKS এর জন্য প্রতিক্রিয়া ডক্সকে দেখুন । উপরের ইউআরএল অনুসারে, forceUpdateফাংশনাল উপাদানগুলির জন্য কার্যকারিতা সরবরাহ করতে কেউ "UseReducer" হুক ব্যবহার করতে পারেন ।

একটি ওয়ার্কিং কোড নমুনা that does not use state or propsনীচে সরবরাহ করা হয়েছে, যা এই ইউআরএলে কোডস্যান্ডবক্সেও উপলব্ধ

import React, { useReducer, useRef } from "react";
import ReactDOM from "react-dom";

import "./styles.css";

function App() {
  // Use the useRef hook to store a mutable value inside a functional component for the counter
  let countref = useRef(0);

  const [, forceUpdate] = useReducer(x => x + 1, 0);

  function handleClick() {
    countref.current++;
    console.log("Count = ", countref.current);
    forceUpdate(); // If you comment this out, the date and count in the screen will not be updated
  }

  return (
    <div className="App">
      <h1> {new Date().toLocaleString()} </h1>
      <h2>You clicked {countref.current} times</h2>
      <button
        onClick={() => {
          handleClick();
        }}
      >
        ClickToUpdateDateAndCount
      </button>
    </div>
  );
}

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

দ্রষ্টব্য: ইউএসস্টেট হুক (ইউজাররেডুসারের পরিবর্তে) ব্যবহার করে একটি বিকল্প পদ্ধতিও এই ইউআরএলে উপলব্ধ ।


1

react-tidyকেবল এটি করার জন্য একটি কাস্টম হুক রয়েছে useRefresh:

import React from 'react'
import {useRefresh} from 'react-tidy'

function App() {
  const refresh = useRefresh()
  return (
    <p>
      The time is {new Date()} <button onClick={refresh}>Refresh</button>
    </p>
  )
}

এই হুক সম্পর্কে আরও জানুন

দাবি অস্বীকার আমি এই গ্রন্থাগারের লেখক।

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