রিডেক্স-থাঙ্ক এবং রিডেক্স-প্রতিশ্রুতির মধ্যে পার্থক্য কী?


95

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

এই দুটি প্যাকেজ মধ্যে প্রধান পার্থক্য কি? কোনও একক পৃষ্ঠার প্রতিক্রিয়া অ্যাপ্লিকেশনটিতে দুটি প্যাকেজ ব্যবহার করার বা রিডেক্স-থঙ্ককে আঁকড়ে রাখার কোনও সুবিধা কি যথেষ্ট হবে?

উত্তর:


123

redux-thunk আপনার অ্যাকশন নির্মাতাদের একটি ফাংশন ফিরে আসতে দেয়:

function myAction(payload){
    return function(dispatch){
        // use dispatch as you please
    }
}

redux-promise তাদের একটি প্রতিশ্রুতি ফিরিয়ে দেওয়ার অনুমতি দেয়:

function myAction(payload){
    return new Promise(function(resolve, reject){
        resolve(someData); // redux-promise will dispatch someData
    });
}

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


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

4
আপনি যদি প্রতিশ্রুতি ব্যবহার করেন, আপনি অ্যাসিঙ্ক ব্যবহার করতে পারেন / ক্রিয়া স্রষ্টাদের সাথে অপেক্ষা করতে পারেন
রবি

82

আপনি সম্ভবত আপনার অ্যাপ্লিকেশন একসাথে চাইবেন / প্রয়োজন হবে। রুটিন প্রতিশ্রুতি-উত্পাদক অ্যাসিঙ্ক কার্যগুলির জন্য রডেক্স-প্রতিশ্রুতি দিয়ে শুরু করুন এবং তারপরে জটিলতা বাড়ার সাথে সাথে থঙ্কস (বা সাগাস, ইত্যাদি) যোগ করতে স্কেল করুন :

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

এই ক্ষেত্রে, এর সুবিধাটি redux-thunkহ'ল এটি আপনাকে আপনার ক্রিয়া-স্রষ্টার অভ্যন্তরে জটিলতা সজ্জিত করতে দেয়

তবে মনে রাখবেন যে আপনার থানক যদি প্রতিশ্রুতি দেয় এবং প্রেরণ করে তবে আপনি উভয় গ্রন্থাগার একসাথে ব্যবহার করতে চাইবেন :

  • থঙ্কটি মূল ক্রিয়াটি তৈরি করে তাদের প্রেরণ করবে
  • redux-promiseতারপরে আবশ্যক বয়লারপ্লেটটি এড়াতে আপনার থাঙ্কের দ্বারা উত্পন্ন পৃথক প্রতিশ্রুতিগুলিতে রিডুসার (গুলি) -এ মোড়ক উন্মোচন করবে। (আপনি পারে পরিবর্তে সবকিছু Thunks এ, না promise.then(unwrapAndDispatchResult).catch(unwrapAndDispatchError)... কিন্তু তুমি কেন would?)

ব্যবহারের ক্ষেত্রে পার্থক্যের যোগফলের আরও একটি সহজ উপায়: সূচনা বনাম রেডাক্স ক্রিয়া চক্রের শেষ :

  • আপনার রেডাক্স প্রবাহের শুরুর জন্য থানস : আপনার যদি কোনও জটিল ক্রিয়া তৈরি করতে হয় বা আপনার উপাদানগুলির বাইরে রাখে এবং স্পষ্টতই হ্রাসকারীদের থেকে দূরে থাকে তবে কিছু অযৌক্তিক ক্রিয়া-সৃষ্টির যুক্তি সজ্জিত করতে প্রয়োজন হয়।
  • redux-promiseজন্য শেষ একবার সবকিছু সহজ প্রতিশ্রুতি নিচে সেদ্ধ হয়ে গেলে, আপনার প্রবাহ, এবং আপনি শুধু তাদের মোড়ক খোলা এবং দোকান তাদের সমাধান / প্রত্যাখ্যাত মান সঞ্চয় করতে চান

নোট / রেফারেন্স:

  • আমি redux-promise-middlewareমূলটির পিছনে ধারণার আরও সম্পূর্ণ এবং বোধগম্য প্রয়োগ বলে মনে করি redux-promise। এটি সক্রিয় বিকাশের অধীনে রয়েছে এবং এর দ্বারা সুন্দরভাবে পরিপূরকও রয়েছে redux-promise-reducer
  • আপনার জটিল ক্রিয়াগুলি রচনা / সিকোয়েন্সিংয়ের জন্য অতিরিক্ত অনুরূপ মিডলওয়্যারগুলি পাওয়া যায়: একটি খুব জনপ্রিয় একটি redux-sagaএটির সাথে খুব মিল redux-thunk, তবে এটি জেনারেটর ফাংশনগুলির বাক্য গঠনটির উপর ভিত্তি করে। আবার, আপনি সম্ভবত এটি ব্যবহার করতে চাই redux-promise
  • থঙ্ক এবং রিডেক্স-প্রতিশ্রুতি-মিডলওয়্যার সহ বিভিন্ন অ্যাসিঙ্ক সংমিশ্রনের বিকল্পগুলির সাথে সরাসরি তুলনা করার জন্য এখানে একটি দুর্দান্ত নিবন্ধ । (টি এল; ডিআর: "Redux প্রতিশ্রুতি মিডলওয়্যার boilerplate, চমত্কার নাটকীয়ভাবে অন্যান্য অপশন কিছু বনাম হ্রাস" ... "আমি আমি আরো জটিল অ্যাপ্লিকেশনের জন্য সাগা মত মনে (পড়া:" ব্যবহার "), এবং Redux প্রতিশ্রুতি মিডলওয়্যার অন্য সব কিছুর জন্য।" )
  • মনে রাখবেন যে এখানে একটি গুরুত্বপূর্ণ কেস রয়েছে যেখানে আপনি ভাবেন যে আপনার একাধিক ক্রিয়া প্রেরণ করতে হবে, তবে আপনি সত্যিই তা করেন না এবং আপনি সাধারণ জিনিসগুলি সহজ রাখতে পারেন। আপনি কেবলমাত্র একাধিক হ্রাসকারীদের আপনার অ্যাসিঙ্ক কলটিতে প্রতিক্রিয়া দেখাতে চান That's তবে, কেন একাধিক হ্রাসকারীরা একক ক্রিয়াকলাপ পর্যবেক্ষণ করতে পারে না তার কোনও কারণ নেই। আপনি কেবল এটি নিশ্চিত করতে চাইবেন যে আপনার দলটি জানে যে আপনি সেই কনভেনশনটি ব্যবহার করছেন, সুতরাং তারা কেবলমাত্র একটি একক রিডুসার (কোনও সম্পর্কিত নাম সহ) কোনও প্রদত্ত ক্রিয়া পরিচালনা করতে পারবে না can

4
দুর্দান্ত ব্যাখ্যা! নিখরচায় লাইব্রেরির সংখ্যা হ'ল মন ফোটানো। :)
অ্যানবিস

22

সম্পূর্ণ প্রকাশ: আমি রেডাক্স বিকাশের তুলনায় তুলনামূলকভাবে নতুন এবং নিজেই এই প্রশ্নের সাথে লড়াই করেছি। আমি সর্বাধিক সংক্ষিপ্ত উত্তরটি পেয়েছি:

রেডাক্সপ্রোমেস যখন কোনও অ্যাকশন প্রেরণ করা হয় তখন পেইড লোড হিসাবে একটি প্রতিশ্রুতি ফেরত দেয় এবং তারপরেই ReduxPromise মিডলওয়্যার সেই প্রতিশ্রুতিটি সমাধান করতে এবং ফলাফলটি হ্রাসকারীর কাছে দেওয়ার জন্য কাজ করে।

অন্যদিকে, ReduxThunk অ্যাকশন নির্মাতাকে অ্যাকশন অবজেক্টকে হ্রাসকারীদের কাছে প্রেরণ না বলা পর্যন্ত প্রকৃতপক্ষে আটকাতে বাধ্য করে।

টিউটোরিয়ালটির একটি লিঙ্ক এখানে আমি এই তথ্যটি পেয়েছি: https://blog.tighten.co/react-101-part-4-firebase


4
... সাজানো । এগুলি হ'ল ধরণের ... পার্শ্ব প্রতিক্রিয়া ... প্রকৃত নিদর্শন ব্যবহৃত। রেডাক্সপ্রোমেসও লোড হিসাবে কোনও প্রতিশ্রুতি দেয় না। ReduxPromise পরিচালনা কোনো ক্রিয়াগুলি প্রাণবধ যেখানে একটি প্রতিশ্রুতি হল পে লোড।
এক্সএমএল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.