ফ্ল্যাকসের স্টোরগুলি থেকে কোন নেস্টিং স্তরে উপাদানগুলি পড়া উচিত?


89

আমি আমার অ্যাপ্লিকেশনটিকে ফ্লাক্স ব্যবহার করতে আবার লিখছি এবং স্টোরগুলি থেকে ডেটা পুনরুদ্ধারে আমার একটি সমস্যা রয়েছে। আমার অনেকগুলি উপাদান রয়েছে এবং তারা অনেকগুলি বাসা বেঁধে রাখে। এর মধ্যে কয়েকটি বড় ( Article), কিছু ছোট এবং সাধারণ ( UserAvatar, UserLink)।

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

সমস্ত সত্তা উপাদান তাদের নিজস্ব ডেটা পড়েন

স্টোর থেকে কিছু উপাত্ত প্রয়োজন এমন প্রতিটি উপাদান কেবল সত্তা আইডি গ্রহণ করে এবং নিজস্ব সত্তা পুনরুদ্ধার করে।
উদাহরণস্বরূপ, Articleপাস করা হয় articleId, UserAvatarএবং UserLinkপাস করা হয় userId

এই পদ্ধতির বেশ কয়েকটি উল্লেখযোগ্য ডাউনসাইড রয়েছে (কোড নমুনার অধীনে আলোচিত)।

var Article = React.createClass({
  mixins: [createStoreMixin(ArticleStore)],

  propTypes: {
    articleId: PropTypes.number.isRequired
  },

  getStateFromStores() {
    return {
      article: ArticleStore.get(this.props.articleId);
    }
  },

  render() {
    var article = this.state.article,
        userId = article.userId;

    return (
      <div>
        <UserLink userId={userId}>
          <UserAvatar userId={userId} />
        </UserLink>

        <h1>{article.title}</h1>
        <p>{article.text}</p>

        <p>Read more by <UserLink userId={userId} />.</p>
      </div>
    )
  }
});

var UserAvatar = React.createClass({
  mixins: [createStoreMixin(UserStore)],

  propTypes: {
    userId: PropTypes.number.isRequired
  },

  getStateFromStores() {
    return {
      user: UserStore.get(this.props.userId);
    }
  },

  render() {
    var user = this.state.user;

    return (
      <img src={user.thumbnailUrl} />
    )
  }
});

var UserLink = React.createClass({
  mixins: [createStoreMixin(UserStore)],

  propTypes: {
    userId: PropTypes.number.isRequired
  },

  getStateFromStores() {
    return {
      user: UserStore.get(this.props.userId);
    }
  },

  render() {
    var user = this.state.user;

    return (
      <Link to='user' params={{ userId: this.props.userId }}>
        {this.props.children || user.name}
      </Link>
    )
  }
});

এই পদ্ধতির ডাউনসাইডস:

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

সমস্ত ডেটা একবার শীর্ষ স্তরে পড়ে এবং উপাদানগুলিতে চলে যায় passed

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

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

  • এ- Categoryতে এমন UserAvatarলোক রয়েছে যাঁরা এই বিভাগে অবদান রাখেন;
  • একটি Articleবিভিন্ন Categoryএস থাকতে পারে ।

অতএব যদি আমি স্টোর থেকে সমস্ত স্তরের একটি স্তরের পুনরুদ্ধার করতে চাই Article, তবে আমার প্রয়োজন হবে:

  • থেকে নিবন্ধ পুনরুদ্ধার ArticleStore;
  • থেকে সমস্ত নিবন্ধের বিভাগগুলি পুনরুদ্ধার করুন CategoryStore;
  • পৃথকভাবে প্রতিটি বিভাগের অবদানকারীদের থেকে পুনরুদ্ধার করুন UserStore;
  • কোনওভাবে সেই সমস্ত ডেটা উপাদানগুলিতে ফেলুন।

আরও হতাশাজনকভাবে, যখনই আমার গভীরভাবে নেস্টেড সত্তার প্রয়োজন হয়, আমি এটিকে অতিরিক্তভাবে পাস করার জন্য প্রতিটি স্তরের বাসা বাঁধতে কোড যুক্ত করতে হবে।

সাতরে যাও

উভয় পন্থা ত্রুটিযুক্ত বলে মনে হচ্ছে। আমি কীভাবে এই সমস্যাটি সবচেয়ে মার্জিতভাবে সমাধান করব?

আমার উদ্দেশ্য:

  • স্টোরগুলিতে গ্রাহকগণের উন্মাদ সংখ্যা থাকা উচিত নয়। পিতা-মাতার উপাদানগুলি ইতিমধ্যে এটি UserLinkকরে UserStoreকিনা তা শুনতে প্রত্যেকের বোকামি ।

  • যদি প্যারেন্ট উপাদানগুলি স্টোর (উদাঃ user) থেকে কিছু বস্তু পুনরুদ্ধার করে থাকে তবে আমি চাই না যে কোনও নেস্টেড উপাদান আবার এনে আনতে হবে। আমার এটিকে প্রপসের মাধ্যমে পাস করতে সক্ষম হওয়া উচিত।

  • শীর্ষ স্তরের সমস্ত সত্ত্বা (সম্পর্ক সহ) আনতে হবে না কারণ এটি সম্পর্ক যুক্ত করা বা অপসারণকে জটিল করে তুলবে। নেস্টেড সত্তা যখনই নতুন সম্পর্ক অর্জন করে তখন আমি সমস্ত নেস্টিং স্তরে নতুন প্রপস চালু করতে চাই না (যেমন বিভাগটি পায় curator)।


4
এই পোস্ট করার জন্য ধন্যবাদ। আমি এখানে একটি খুব অনুরূপ প্রশ্ন এখানে পোস্ট করেছি : গ্রুপ. google.google.com/forum/… আমি যা কিছু দেখেছি তা সম্পর্কিত ডেটার পরিবর্তে ফ্ল্যাট ডেটা কাঠামো নিয়ে কাজ করেছে। আমি এ সম্পর্কে কোনও সেরা অনুশীলন না দেখে অবাক হয়েছি।
উবার্ল্লামা

উত্তর:


37

শ্রেণিবদ্ধের শীর্ষের কাছাকাছি একটি নিয়ামক-ভিউ উপাদানটিতে প্রাসঙ্গিক স্টোরগুলি শুনে বেশিরভাগ লোকেরা শুরু করে।

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

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

প্রকারের পরীক্ষা করা এই কৌশলটির সাথে আরও কঠিন, তবে আপনি রিএ্যাক্টের প্রোপাইপগুলি সহ বৃহত-অবজেক্ট-এএসপ-এর জন্য একটি "শেপ" বা টাইপ টেম্পলেট সেট করতে পারেন। দেখুন: https://github.com/facebook/react/blob/master/src/core/ReactPropTypees.js#L76-L91 http://facebook.github.io/react/docs/reusable-components.html#prop - বৈধকরণ

নোট করুন যে আপনি স্টোরগুলিতে স্টোরের মধ্যে ডেটা যুক্ত করার যুক্তি যুক্ত করতে পারেন। তুমি অনেক ArticleStoreশক্তি , এবং প্রত্যেক সঙ্গে প্রাসঙ্গিক ব্যবহারকারীরা অন্তর্ভুক্ত রেকর্ড এটা মাধ্যমে প্রদান করে । আপনার মতামতগুলিতে এটি করা ভিউ লেয়ারে যুক্তি চাপানোর মতো শোনায়, যা যখনই সম্ভব হয় আপনার এড়ানো উচিত practicewaitFor()UserStoreArticlegetArticles()

আপনি ব্যবহার করতেও প্ররোচিত হতে পারেন transferPropsTo()এবং অনেক লোক এটি করা পছন্দ করে তবে আমি পাঠ্যযোগ্যতা এবং এভাবে রক্ষণাবেক্ষণের জন্য সবকিছুকে সুস্পষ্ট রাখতে পছন্দ করি।

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


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

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

4
ঠিক, এবং যেকোনোভাবে আমি শুধু এটা করতে প্রয়োজন যখন আমি নির্দিষ্ট সেখানে আছি হবে হয় জন্য perf সমস্যার যা দোকানে ক্ষেত্রে যে প্রতি মিনিটে আপডেট বেশ কয়েকবার সর্বোচ্চ হওয়া উচিত নয়। আবার আপনাকে ধন্যবাদ!
ড্যান আব্রামভ

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

37

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

আমাদের উদাহরণস্বরূপ, Articleএমন একটি articleপ্রপ থাকা উচিত যা একটি অবজেক্ট (সম্ভবত এটি দ্বারা ArticleListবা পুনরুদ্ধার করা ArticlePage)।

কারণ Articleএছাড়াও রেন্ডার করতে UserLinkএবং UserAvatarনিবন্ধের লেখকের জন্য চায় , এটি সাবস্ক্রাইব করে UserStoreএবং author: UserStore.get(article.authorId)তার রাজ্যে রাখবে । এটি তখন রেন্ডার UserLinkএবং UserAvatarএই সঙ্গে হবে this.state.author। তারা যদি এটিকে আরও নীচে দিয়ে যেতে চায় তবে তারা পারবে। কোনও শিশু উপাদানকে এই ব্যবহারকারীটিকে পুনরুদ্ধার করতে হবে না।

পুনরাবৃত্তি করতে:

  • কোনও উপাদান কখনও প্রোপ হিসাবে আইডি পায় না; সমস্ত উপাদান তাদের নিজ নিজ বস্তু গ্রহণ।
  • যদি সন্তানের উপাদানগুলির কোনও সত্তার প্রয়োজন হয় তবে এটি পুনরুদ্ধার করা এবং প্রপোস হিসাবে পাস করা পিতামাতার দায়িত্ব।

এটি আমার সমস্যাটি বেশ সুন্দরভাবে সমাধান করে। কোডের উদাহরণটি এই পদ্ধতির ব্যবহার করতে পুনরায় লিখিত:

var Article = React.createClass({
  mixins: [createStoreMixin(UserStore)],

  propTypes: {
    article: PropTypes.object.isRequired
  },

  getStateFromStores() {
    return {
      author: UserStore.get(this.props.article.authorId);
    }
  },

  render() {
    var article = this.props.article,
        author = this.state.author;

    return (
      <div>
        <UserLink user={author}>
          <UserAvatar user={author} />
        </UserLink>

        <h1>{article.title}</h1>
        <p>{article.text}</p>

        <p>Read more by <UserLink user={author} />.</p>
      </div>
    )
  }
});

var UserAvatar = React.createClass({
  propTypes: {
    user: PropTypes.object.isRequired
  },

  render() {
    var user = this.props.user;

    return (
      <img src={user.thumbnailUrl} />
    )
  }
});

var UserLink = React.createClass({
  propTypes: {
    user: PropTypes.object.isRequired
  },

  render() {
    var user = this.props.user;

    return (
      <Link to='user' params={{ userId: this.props.user.id }}>
        {this.props.children || user.name}
      </Link>
    )
  }
});

এটি অন্তঃস্থলের উপাদানগুলিকে বোকা রাখে তবে শীর্ষ স্তরের উপাদানগুলির বাইরে নরকে জটিল করতে আমাদের বাধ্য করে না।


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

2

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

এইভাবে সবকিছু রাষ্ট্রীয় উপাদানগুলি থেকে রাজ্যহীন উপাদানগুলিতে প্রবাহিত হয়। রাজ্যগুলিকে গণনা কম রাখছে।

আপনার ক্ষেত্রে, নিবন্ধটি রাষ্ট্রীয় হবে এবং সেইজন্য স্টোর এবং ইউজারলিঙ্ক ইত্যাদির সাথে কথা বলে only


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

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

4
আমি নিবন্ধে আনতে আরম্ভ করতে পারি না কারণ এটি একসাথে রেন্ডার করা দরকার। প্রসারণযোগ্য এপিআই হিসাবে, আমরা সেগুলি ব্যবহার করতাম তবে স্টোরগুলি পার্স করতে তারা খুব সমস্যাযুক্ত। এমনকি আমি এই কারণে প্রতিক্রিয়া সমতল করতে একটি গ্রন্থাগারও লিখেছিলাম ।
ড্যান আব্রামভ

0

আপনার 2 দর্শনে বর্ণিত সমস্যাগুলি কোনও একক পৃষ্ঠার প্রয়োগের জন্য সাধারণ to

তারা এই ভিডিওতে সংক্ষেপে আলোচনা করা হয়েছে: https://www.youtube.com/watch?v=IrgHurBjQbg এবং রিলে ( https://facebook.github.io/relay ) ফেসবুক দ্বারা আপনার বর্ণিত ট্রেডঅফ কাটিয়ে উঠার জন্য তৈরি করা হয়েছিল।

রিলে এর পদ্ধতির খুব ডেটা কেন্দ্রিক। এটি এই প্রশ্নের উত্তর যা "সার্ভারের কাছে একটি ক্যোয়ারিতে এই ভিউটিতে প্রতিটি উপাদানগুলির জন্য কেবলমাত্র প্রয়োজনীয় ডেটা আমি কীভাবে পাব?" এবং একই সময়ে রিলে এটি নিশ্চিত করে যে কোনও কোড যখন একাধিক ভিউতে ব্যবহৃত হয় তখন আপনার কোড জুড়ে সামান্য সংযোগ ঘটবে।

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

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

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


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