রেডাক্স - একাধিক দোকান কেন?


220

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

কেন এত জোরালো পরামর্শ দেওয়া হচ্ছে যে একটি রেডাক্স অ্যাপ্লিকেশনটিতে কেবল একটি স্টোর রয়েছে?

আমি একাধিক স্টোর সেটআপ বনাম একটি একক-স্টোর সেটআপের উপকারিতা / বিষয়গুলি বুঝতে পারি ( এই বিষয়ে এসও-তে অনেকগুলি প্রশ্নোত্তর রয়েছে )।

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

সম্পাদনা: একক দোকানে রূপান্তর করার পরে প্রতিক্রিয়া

অনেকে জটিল এসপিএ কী বিবেচনা করবেন তা নিয়ে রিডুএক্সের সাথে কয়েক মাস কাজ করার পরে, আমি বলতে পারি যে একক স্টোর কাঠামোটি কাজ করার জন্য খাঁটি আনন্দ হয়েছে।

কয়েকটি পয়েন্ট যা অন্যদেরকে বুঝতে সহায়তা করে যে কেন একক দোকান বনাম অনেকগুলি স্টোর বহু, অনেকগুলি ব্যবহারের ক্ষেত্রে শঙ্কিত প্রশ্ন:

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

কয়েক পয়েন্টার

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

{
  apis: {     // data from various services
    api1: {},
    api2: {},
    ...
  }, 
  components: {} // UI state data for each widget, component, you name it 
  session: {} // session-specific information
}

আশা করি এই মতামত অন্যদের সহায়তা করবে।

2 সম্পাদনা করুন - সহায়ক স্টোর সরঞ্জাম

আপনারা যারা ভাবছেন যে কীভাবে কোনও একক স্টোরকে "সহজেই" পরিচালনা করবেন , যা দ্রুত জটিল হয়ে উঠতে পারে। এমন একটি সরঞ্জাম রয়েছে যা আপনার স্টোরের কাঠামোগত নির্ভরতা / যুক্তি আলাদা করতে সহায়তা করে।

নেই Normalizr যা স্কিমা উপর ভিত্তি করে আপনার ডেটা normalizes। এরপরে এটি আপনার ডেটা নিয়ে কাজ করতে এবং idঅভিধানের মতো আপনার ডেটার অন্যান্য অংশগুলি আনার জন্য একটি ইন্টারফেস সরবরাহ করে ।

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


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

কীভাবে আপনার উপাদান মানচিত্র / ব্যবহারের স্টোর ডেটা ব্যবহার করে তা আপনার উপর নির্ভর করে। যদিও আমি মনে করি আমি আপনার প্রশ্নটি পুরোপুরি বুঝতে পারছি না, আপনি কি কোনও চ্যাট সেশনটি বিস্তারিত বা ব্যাখ্যা করতে পারবেন?
সেবাস্তিয়ান ড্যানিয়েল

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

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

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

উত্তর:


232

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

আমরা ডক্সে কেন এটি চাপ দিই? কারণ ফ্লাক্স ব্যাকগ্রাউন্ড থেকে আসা বেশিরভাগ লোকেরা একাধিক স্টোর ধরে নেবে এটি আপডেট কোড মডিউলার তৈরির সমাধান। তবে রেডাক্সের এর জন্য আলাদা সমাধান রয়েছে: রিডুসার কম্পোজিশন।

রিডুসার ট্রিতে আরও বিভক্ত একাধিক হ্রাসকারী হ'ল আপনি কীভাবে রেডাক্সে আপডেটগুলি মডুলার রাখেন। আপনি যদি এটি স্বীকৃতি না পান এবং প্রথমে হ্রাসকারী রচনাটি সম্পূর্ণরূপে না বুঝে একাধিক দোকানে যান, আপনি রেডাক্স একক স্টোর আর্কিটেকচারের অনেকগুলি সুবিধা মিস করবেন:

  • রিডুসার কম্পোজিশন ব্যবহার করে ফ্লুসে একটি "লা ডিপেন্ডেন্ট আপডেটগুলি" প্রয়োগ করা সহজ করে waitForএকটি হ্রাসকারীকে অতিরিক্ত তথ্য সহ এবং একটি নির্দিষ্ট ক্রমে ম্যানুয়ালি কল করে অন্য হ্রাসকারীদের কল করে ux

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

  • একটি একক স্টোর রেডাক্স ডেভটুলগুলি সময়ের ভ্রমণ বৈশিষ্ট্যগুলিকে সম্ভব করে তোলে। এটি রেডেক্স-আনডো বা রিডেক্স-আশাবাদী এর মতো সম্প্রদায় সম্প্রসারণকে সহজ করে তোলে কারণ তারা হ্রাসকারী স্তরে কাজ করে। স্টোরের জন্য এ জাতীয় "হ্রাসকারী বৃদ্ধিকারী" লেখা যায় না।

  • একটি একক স্টোর গ্যারান্টি দেয় যে প্রেরণের প্রক্রিয়া করার পরে সাবস্ক্রিপশনগুলি বলা হবে। অর্থাৎ শ্রোতাদের অবহিত করার সময়, রাজ্যটি পুরোপুরি আপডেট করা হয়েছে। অনেক স্টোর সহ, এরকম কোনও গ্যারান্টি নেই। এটি waitForফ্লাক্সের ক্রাচ প্রয়োজনের একটি কারণ । একটি একক স্টোর সহ, এটি আপনি প্রথম স্থানে দেখেন এমন কোনও সমস্যা নয়।

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


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

4
@ সেবাস্তিয়ান "শপিং কার্ট" উদাহরণটি এর জন্য ভাল বলে মনে করি।
ড্যান আব্রামভ

3
আমি ধীরে ধীরে রিডেক্সকে একটি traditionalতিহ্যবাহী (নন এসপিএ) অ্যাপ্লিকেশনটিতে প্রয়োগ করছি। আমি প্রতিটি "পুরো" জন্য মাল্টিপ্প স্টোর ব্যবহার করছি আমি সম্পূর্ণ বিক্রিয়াটিকে একই স্টোর ব্যবহারের পরিবর্তিত না করা পর্যন্ত একটি প্রতিক্রিয়া / রিডাক্স বাস্তবায়নে রূপান্তর করি।
পল নফফ

5
@ ড্যানআব্রামভ কৌতূহল আপনার পরিস্থিতি কি হবে যেখানে আপনার প্রধান "অ্যাপ" তার নিজস্ব রেডাক্স স্টোর চালাচ্ছে এবং এনএমপি এর মাধ্যমে একটি পৃথক রেডাক্স স্টোর চালিত একটি স্ট্যান্ডএলোন "অ্যাপ" মাধ্যমে আমদানি করছে। উদাহরণস্বরূপ, যদি আপনার সংস্থার অন্য কোনও দলের কোনও ইউআইয়ের সাথে এমন কোনও বার্তা পরিষেবা থাকে যা আপনি সেই ডেটা দিয়ে আপনার স্টোরকে দূষিত না করেই টানতে চান।
natlee75

6
@ natlee75 "রেডাক্সে একাধিক স্টোর ব্যবহারের কিছু বৈধ কারণের মধ্যে অন্তর্ভুক্ত থাকতে পারে: [...] একটি বড় অ্যাপ্লিকেশনটিতে একটি উপাদান হিসাবে একটি রেডাক্স অ্যাপ্লিকেশনকে বিচ্ছিন্ন করা, এক্ষেত্রে আপনি মূলের উপাদান হিসাবে প্রতি স্টোর তৈরি করতে চান।" Redx.js.org/docs/FAQ.html#store-setup-mpleple-stores
কেভিন

24

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

উদাহরণস্বরূপ, আমি নিম্নলিখিত সাধারণ কার্যকারিতা ক্ষেত্রগুলিকে পৃথক অ্যাপ্লিকেশন হিসাবে বিবেচনা করি:

  • অ্যাডমিন
  • অ্যানালিটিক্স / ডেটা ভিস ড্যাশবোর্ড
  • বিলিংয়ের পরিচালনা এবং ক্রয়ের প্রবাহ
  • এন্টারপ্রাইজ অ্যাকাউন্ট টিম / অনুমতি পরিচালনা

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

খুব বড় অ্যাপ্লিকেশন পরিচালনা করার সর্বোত্তম উপায় হ'ল তাদেরকে অনেক ছোট অ্যাপ্লিকেশনের সংমিশ্রণের মতো আচরণ করা।

যদি আপনার অ্যাপ্লিকেশনটি ~ 50k এলওসি বলার চেয়ে কম হয় তবে আপনার সম্ভবত এই পরামর্শটি উপেক্ষা করা উচিত এবং পরিবর্তে ড্যানের পরামর্শ অনুসরণ করা উচিত।

যদি আপনার অ্যাপ্লিকেশনটি 1 মিলিয়ন এলওসি-র বেশি হয় তবে আপনি সম্ভবত মনো-রেপো রক্ষণাবেক্ষণ করেও মিনি অ্যাপ্লিকেশনগুলি বিভক্ত করা উচিত।


5

এই আর্কিটেকচারাল সিদ্ধান্তটি অ্যাপ্লিকেশন বিকাশকারীদের তাদের প্রকল্পগুলির প্রয়োজনের ভিত্তিতে অন্তর্ভুক্ত

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

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

আসুন কল্পনা করুন যে আপনার কয়েকটি রিডেক্স স্টোর রয়েছে। আপনি একমুখী ডেটা প্রবাহ ভঙ্গ করবেন। আপনার স্টোরগুলির মধ্যে কতটা সংযোগ রয়েছে তা আপনি অবিলম্বে বুঝতে পারবেন realize আপনি এই সংযোগগুলি থেকে ভুগতে পারেন, বিজ্ঞপ্তি ডিপগুলির সাথে লড়াই করা ইত্যাদি

একমুখী প্রবাহ সহ একক অপরিবর্তনীয় স্টোর প্রতিটি রোগের জন্য অমৃত নয়। যদি আপনি প্রকল্পের আর্কিটেকচার বজায় রাখতে না চান তবে আপনি যেভাবেই ক্ষতিগ্রস্থ হতে পারেন।


আপনি যা বলেছেন তা আমি পছন্দ করেছি এবং এখানে আমি এ সম্পর্কিত সম্পর্কিত প্রশ্ন জিজ্ঞাসা করেছি। কিছু সময় পেলে এবং আপনার মতামতগুলি ভাগ করে নেওয়ার জন্য কি এই বিষয়টিকে লক্ষ্য করতে আপনি আপত্তি করবেন? প্রশ্নটি আমি রেডডিতে জিজ্ঞাসা করেছি, কারণ এসও এখানে এ জাতীয় প্রশ্নগুলিকে উত্সাহ দেয় না।
অরূপ রক্ষিত

3

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

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


আপনার বার্তাটি দেখে মনে হচ্ছে "কয়েকটি ক্ষেত্রে বাদে সর্বদা রডেক্স ব্যবহার করুন" == "কয়েকটি ক্ষেত্রে বাদে আপনার প্রকল্পের স্থাপত্যের দরকার নেই" don't এটি বাস্তবের খুব কাছাকাছি, আমি খুশি।
পুচু

2

আমরা রিডেক্স ব্যবহার করে একাধিক দোকান কেন ব্যবহার করতে পারি না ????

রেডাক্সে এটি প্রয়োজনীয় নয় কারণ ডেটা ডোমেনগুলির মধ্যে বিচ্ছেদ ইতিমধ্যে একটি একক রেডুসারকে ছোট হ্রাসকারীগুলিতে বিভক্ত করে অর্জিত হয়েছে।


আমি কি একাধিক দোকান তৈরি করতে পারি? আমি কি সরাসরি আমার দোকানটি আমদানি করতে পারি এবং নিজেই এটি উপাদানগুলিতে ব্যবহার করতে পারি?

আসল ফ্লাক্স প্যাটার্নটিতে একটি অ্যাপে একাধিক "স্টোর" থাকার বর্ণনা দেওয়া হয়, যার প্রত্যেকটিই ডোমেন ডেটার আলাদা আলাদা অঞ্চল ধারণ করে। এটি আপডেট করার জন্য একটি স্টোর "অপেক্ষার জন্য" অন্য একটি স্টোর থাকা দরকার যেমন সমস্যাগুলি প্রবর্তন করতে পারে।

রেডাক্সে এটি প্রয়োজনীয় নয় কারণ ডেটা ডোমেনগুলির মধ্যে বিচ্ছেদ ইতিমধ্যে একটি একক রেডুসারকে ছোট হ্রাসকারীগুলিতে বিভক্ত করে অর্জিত হয়েছে।

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

রেডাক্সে একাধিক স্টোর ব্যবহারের কিছু বৈধ কারণের মধ্যে রয়েছে:

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

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

রিডেক্স দ্বারা অফিসিয়াল ডক


1

রেডাক্সে একটি স্টোর থাকা আসলে আমাদের অনেক ক্ষেত্রেই প্রয়োজন, আমি উভয়ই রেডাক্স এবং ফ্লাক্স ব্যবহার করেছি এবং বিশ্বাস করি যে রেডাক্স কাজটি আরও ভাল করে!

স্টোরটি একটি জাভাস্ক্রিপ্ট অবজেক্টে রয়েছে তা ভুলে যাবেন না, সুতরাং আপনার কেবলমাত্র একটি দোকান থাকলে এটি সহজেই বাড়ানো এবং পুনরায় ব্যবহার করা যেতে পারে, আমার কাছে একটি স্টোর থাকায় রেডাক্স ডিভাইস ব্যবহার করে ট্র্যাভেসিং করা আরও সহজ হয়ে যায় এবং এতে মেশানো যায় না me বড় অ্যাপ্লিকেশন ...

এছাড়াও একটি স্টোরের ধারণাটি আমাদের জন্য ডাটাবেসকে নকল করছে, সত্যের একটি উত্স যা আপনি এটি পরিবর্তন করতে পারেন এবং আপনি এটি ব্রাউজারের স্মৃতিতে অ্যাক্সেস করতে পারবেন ...

পুরো অ্যাপ্লিকেশনটি যদি ভালভাবে পরিচালিত হয় তবে পুরো অ্যাপ্লিকেশনের স্থিতি পরিচালনা করতে একটি স্টোর যথেষ্ট হতে পারে ...


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