You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Web-Dev-For-Beginners/translations/pa/7-bank-project/4-state-management/README.md

33 KiB

ਬੈਂਕਿੰਗ ਐਪ ਬਣਾਓ ਭਾਗ 4: ਸਟੇਟ ਮੈਨੇਜਮੈਂਟ ਦੇ ਅਸੂਲ

ਅਗਲੇ 5 ਮਿੰਟਾਂ ਵਿੱਚ ਤੁਸੀਂ ਕੀ ਕਰ ਸਕਦੇ ਹੋ

ਵਿਆਸਤ ਡਿਵੈਲਪਰਾਂ ਲਈ ਤੇਜ਼ ਸ਼ੁਰੂਆਤ ਦਾ ਰਾਹ

flowchart LR
    A[⚡ 5 minutes] --> B[Diagnose state issues]
    B --> C[Create central state object]
    C --> D[Add updateState function]
    D --> E[See immediate improvements]
  • ਮਿੰਟ 1: ਮੌਜੂਦਾ ਸਟੇਟ ਸਮੱਸਿਆ ਦੀ ਜਾਂਚ ਕਰੋ - ਲੌਗਇਨ ਕਰੋ, ਪੇਜ ਰੀਫ੍ਰੈਸ਼ ਕਰੋ, ਲੌਗਆਉਟ ਦੇਖੋ
  • ਮਿੰਟ 2: let account = null ਨੂੰ let state = { account: null } ਨਾਲ ਬਦਲੋ
  • ਮਿੰਟ 3: ਨਿਯੰਤਰਿਤ ਅੱਪਡੇਟਾਂ ਲਈ ਇੱਕ ਸਧਾਰਨ updateState() ਫੰਕਸ਼ਨ ਬਣਾਓ
  • ਮਿੰਟ 4: ਇੱਕ ਫੰਕਸ਼ਨ ਨੂੰ ਨਵੇਂ ਪੈਟਰਨ ਦੀ ਵਰਤੋਂ ਕਰਨ ਲਈ ਅੱਪਡੇਟ ਕਰੋ
  • ਮਿੰਟ 5: ਸੁਧਾਰਿਆ ਗਿਆ ਪੇਸ਼ਗੂਈ ਅਤੇ ਡੀਬੱਗਿੰਗ ਸਮਰੱਥਾ ਦੀ ਜਾਂਚ ਕਰੋ

ਤੇਜ਼ ਡਾਇਗਨੋਸਟਿਕ ਟੈਸਟ:

// Before: Scattered state
let account = null; // Lost on refresh!

// After: Centralized state
let state = Object.freeze({ account: null }); // Controlled and trackable!

ਇਸਦਾ ਮਹੱਤਵ ਕਿਉਂ ਹੈ: 5 ਮਿੰਟਾਂ ਵਿੱਚ, ਤੁਸੀਂ ਅਨਿਯਮਿਤ ਸਟੇਟ ਮੈਨੇਜਮੈਂਟ ਤੋਂ ਪੇਸ਼ਗੂਈਯੋਗ, ਡੀਬੱਗ ਕਰਨ ਯੋਗ ਪੈਟਰਨਾਂ ਵਿੱਚ ਬਦਲਾਅ ਦਾ ਅਨੁਭਵ ਕਰੋਗੇ। ਇਹ ਉਹ ਬੁਨਿਆਦ ਹੈ ਜੋ ਜਟਿਲ ਐਪਲੀਕੇਸ਼ਨਾਂ ਨੂੰ ਸੰਭਾਲਯੋਗ ਬਣਾਉਂਦੀ ਹੈ।

🗺️ ਸਟੇਟ ਮੈਨੇਜਮੈਂਟ ਮਾਹਰਤਾ ਦੁਆਰਾ ਤੁਹਾਡਾ ਸਿੱਖਣ ਦਾ ਸਫਰ

journey
    title From Scattered State to Professional Architecture
    section Diagnosing Problems
      Identify state loss issues: 3: You
      Understand scattered updates: 4: You
      Recognize architecture needs: 6: You
    section Centralizing Control
      Create unified state object: 5: You
      Implement controlled updates: 7: You
      Add immutable patterns: 8: You
    section Adding Persistence
      Implement localStorage: 6: You
      Handle serialization: 7: You
      Create session continuity: 9: You
    section Balancing Freshness
      Address data staleness: 5: You
      Build refresh systems: 8: You
      Achieve optimal balance: 9: You

ਤੁਹਾਡਾ ਸਫਰ ਦਾ ਮਕਸਦ: ਇਸ ਪਾਠ ਦੇ ਅੰਤ ਤੱਕ, ਤੁਸੀਂ ਇੱਕ ਪੇਸ਼ੇਵਰ-ਗੁਣਵੱਤਾ ਵਾਲਾ ਸਟੇਟ ਮੈਨੇਜਮੈਂਟ ਸਿਸਟਮ ਬਣਾਇਆ ਹੋਵੇਗਾ ਜੋ ਪੇਰਸਿਸਟੈਂਸ, ਡਾਟਾ ਤਾਜਗੀ ਅਤੇ ਪੇਸ਼ਗੂਈਯੋਗ ਅੱਪਡੇਟਾਂ ਨੂੰ ਸੰਭਾਲਦਾ ਹੈ - ਉਹੀ ਪੈਟਰਨ ਜੋ ਉਤਪਾਦਨ ਐਪਲੀਕੇਸ਼ਨਾਂ ਵਿੱਚ ਵਰਤੇ ਜਾਂਦੇ ਹਨ।

ਪਾਠ ਤੋਂ ਪਹਿਲਾਂ ਕਵਿਜ਼

ਪਾਠ ਤੋਂ ਪਹਿਲਾਂ ਕਵਿਜ਼

ਪਰਿਚਯ

ਸਟੇਟ ਮੈਨੇਜਮੈਂਟ Voyager spacecraft ਦੇ ਨੈਵੀਗੇਸ਼ਨ ਸਿਸਟਮ ਵਾਂਗ ਹੈ ਜਦੋਂ ਸਭ ਕੁਝ ਸਹੀ ਤਰੀਕੇ ਨਾਲ ਕੰਮ ਕਰ ਰਿਹਾ ਹੁੰਦਾ ਹੈ, ਤਾਂ ਤੁਸੀਂ ਇਸਦੀ ਮੌਜੂਦਗੀ ਨੂੰ ਮੁਸ਼ਕਲ ਨਾਲ ਮਹਿਸੂਸ ਕਰਦੇ ਹੋ। ਪਰ ਜਦੋਂ ਕੁਝ ਗਲਤ ਹੁੰਦਾ ਹੈ, ਤਾਂ ਇਹ ਇੰਟਰਸਟੈਲਰ ਸਪੇਸ ਤੱਕ ਪਹੁੰਚਣ ਅਤੇ ਕੌਸਮਿਕ ਖਾਲੀ ਵਿੱਚ ਖੋ ਜਾਣ ਦੇ ਵਿਚਕਾਰ ਫਰਕ ਬਣ ਜਾਂਦਾ ਹੈ। ਵੈੱਬ ਡਿਵੈਲਪਮੈਂਟ ਵਿੱਚ, ਸਟੇਟ ਉਹ ਸਭ ਕੁਝ ਦਰਸਾਉਂਦਾ ਹੈ ਜੋ ਤੁਹਾਡੀ ਐਪਲੀਕੇਸ਼ਨ ਨੂੰ ਯਾਦ ਰੱਖਣ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ: ਯੂਜ਼ਰ ਲੌਗਇਨ ਸਥਿਤੀ, ਫਾਰਮ ਡਾਟਾ, ਨੈਵੀਗੇਸ਼ਨ ਇਤਿਹਾਸ, ਅਤੇ ਅਸਥਾਈ ਇੰਟਰਫੇਸ ਸਥਿਤੀਆਂ।

ਜਿਵੇਂ ਤੁਹਾਡੀ ਬੈਂਕਿੰਗ ਐਪ ਸਧਾਰਨ ਲੌਗਇਨ ਫਾਰਮ ਤੋਂ ਇੱਕ ਹੋਰ ਸੁਧਾਰਿਤ ਐਪਲੀਕੇਸ਼ਨ ਵਿੱਚ ਵਿਕਸਿਤ ਹੋਈ ਹੈ, ਤੁਸੀਂ ਸ਼ਾਇਦ ਕੁਝ ਆਮ ਚੁਣੌਤੀਆਂ ਦਾ ਸਾਹਮਣਾ ਕੀਤਾ ਹੋਵੇਗਾ। ਪੇਜ ਨੂੰ ਰੀਫ੍ਰੈਸ਼ ਕਰੋ ਅਤੇ ਯੂਜ਼ਰ ਅਣਜਾਣੇ ਤੌਰ 'ਤੇ ਲੌਗਆਉਟ ਹੋ ਜਾਂਦੇ ਹਨ। ਬ੍ਰਾਊਜ਼ਰ ਨੂੰ ਬੰਦ ਕਰੋ ਅਤੇ ਸਾਰਾ ਪ੍ਰਗਤੀ ਗਾਇਬ ਹੋ ਜਾਂਦੀ ਹੈ। ਸਮੱਸਿਆ ਨੂੰ ਡੀਬੱਗ ਕਰੋ ਅਤੇ ਤੁਸੀਂ ਕਈ ਫੰਕਸ਼ਨਾਂ ਵਿੱਚ ਖੋਜ ਕਰ ਰਹੇ ਹੋ ਜੋ ਸਾਰੇ ਵੱਖ-ਵੱਖ ਤਰੀਕਿਆਂ ਨਾਲ ਇੱਕੋ ਡਾਟਾ ਨੂੰ ਸੋਧਦੇ ਹਨ।

ਇਹ ਖਰਾਬ ਕੋਡਿੰਗ ਦੇ ਸੰਕੇਤ ਨਹੀਂ ਹਨ ਇਹ ਕੁਦਰਤੀ ਵਿਕਾਸ ਦੇ ਦਰਦ ਹਨ ਜੋ ਉਸ ਸਮੇਂ ਹੁੰਦੇ ਹਨ ਜਦੋਂ ਐਪਲੀਕੇਸ਼ਨ ਇੱਕ ਨਿਰਧਾਰਿਤ ਜਟਿਲਤਾ ਦੀ ਸੀਮਾ ਤੱਕ ਪਹੁੰਚਦੇ ਹਨ। ਹਰ ਡਿਵੈਲਪਰ ਨੂੰ ਇਹ ਚੁਣੌਤੀਆਂ ਦਾ ਸਾਹਮਣਾ ਕਰਨਾ ਪੈਂਦਾ ਹੈ ਜਦੋਂ ਉਹਨਾਂ ਦੇ ਐਪ "ਪ੍ਰੂਫ ਆਫ ਕਾਂਸੈਪਟ" ਤੋਂ "ਪ੍ਰੋਡਕਸ਼ਨ ਰੈਡੀ" ਵਿੱਚ ਬਦਲਦੇ ਹਨ।

ਇਸ ਪਾਠ ਵਿੱਚ, ਅਸੀਂ ਇੱਕ ਕੇਂਦਰੀਕ੍ਰਿਤ ਸਟੇਟ ਮੈਨੇਜਮੈਂਟ ਸਿਸਟਮ ਲਾਗੂ ਕਰਾਂਗੇ ਜੋ ਤੁਹਾਡੀ ਬੈਂਕਿੰਗ ਐਪ ਨੂੰ ਇੱਕ ਭਰੋਸੇਯੋਗ, ਪੇਸ਼ੇਵਰ ਐਪਲੀਕੇਸ਼ਨ ਵਿੱਚ ਬਦਲ ਦਿੰਦਾ ਹੈ। ਤੁਸੀਂ ਡਾਟਾ ਫਲੋਜ਼ ਨੂੰ ਪੇਸ਼ਗੂਈਯੋਗ ਤਰੀਕੇ ਨਾਲ ਮੈਨੇਜ ਕਰਨਾ, ਯੂਜ਼ਰ ਸੈਸ਼ਨ ਨੂੰ ਢੰਗ ਨਾਲ ਪੇਰਸਿਸਟ ਕਰਨਾ, ਅਤੇ ਇੱਕ ਸੁਚਾਰੂ ਯੂਜ਼ਰ ਅਨੁਭਵ ਬਣਾਉਣਾ ਸਿੱਖੋਗੇ ਜੋ ਆਧੁਨਿਕ ਵੈੱਬ ਐਪਲੀਕੇਸ਼ਨਾਂ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ।

ਪੂਰਵ ਸ਼ਰਤਾਂ

ਸਟੇਟ ਮੈਨੇਜਮੈਂਟ ਦੇ ਅਸੂਲਾਂ ਵਿੱਚ ਡੁੱਬਣ ਤੋਂ ਪਹਿਲਾਂ, ਤੁਹਾਨੂੰ ਆਪਣਾ ਡਿਵੈਲਪਮੈਂਟ ਵਾਤਾਵਰਣ ਢੰਗ ਨਾਲ ਸੈਟਅਪ ਕਰਨਾ ਹੋਵੇਗਾ ਅਤੇ ਆਪਣੀ ਬੈਂਕਿੰਗ ਐਪ ਦੀ ਬੁਨਿਆਦ ਸਥਾਪਿਤ ਕਰਨੀ ਹੋਵੇਗੀ। ਇਹ ਪਾਠ ਇਸ ਸਿਰੀਜ਼ ਦੇ ਪਿਛਲੇ ਭਾਗਾਂ ਦੇ ਅਸੂਲਾਂ ਅਤੇ ਕੋਡ 'ਤੇ ਸਿੱਧੇ ਤੌਰ 'ਤੇ ਬਣਦਾ ਹੈ।

ਅੱਗੇ ਵਧਣ ਤੋਂ ਪਹਿਲਾਂ ਇਹਨਾਂ ਕੰਪੋਨੈਂਟਾਂ ਨੂੰ ਤਿਆਰ ਰੱਖੋ:

ਲੋੜੀਂਦਾ ਸੈਟਅਪ:

  • ਡਾਟਾ ਫੈਚਿੰਗ ਪਾਠ ਪੂਰਾ ਕਰੋ - ਤੁਹਾਡੀ ਐਪ ਨੂੰ ਸਫਲਤਾਪੂਰਵਕ ਖਾਤੇ ਦੇ ਡਾਟਾ ਨੂੰ ਲੋਡ ਅਤੇ ਡਿਸਪਲੇ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ
  • Node.js ਨੂੰ ਆਪਣੇ ਸਿਸਟਮ 'ਤੇ ਇੰਸਟਾਲ ਕਰੋ ਬੈਕਐਂਡ API ਚਲਾਉਣ ਲਈ
  • ਸਰਵਰ API ਨੂੰ ਖਾਤੇ ਦੇ ਡਾਟਾ ਕਾਰਵਾਈਆਂ ਨੂੰ ਸੰਭਾਲਣ ਲਈ ਸਥਾਨਕ ਤੌਰ 'ਤੇ ਸ਼ੁਰੂ ਕਰੋ

ਆਪਣੇ ਵਾਤਾਵਰਣ ਦੀ ਜਾਂਚ:

ਇਹ ਕਮਾਂਡ ਟਰਮੀਨਲ ਵਿੱਚ ਚਲਾਕੇ ਆਪਣੇ API ਸਰਵਰ ਨੂੰ ਢੰਗ ਨਾਲ ਚਲਾਉਣ ਦੀ ਪੁਸ਼ਟੀ ਕਰੋ:

curl http://localhost:5000/api
# -> should return "Bank API v1.0.0" as a result

ਇਹ ਕਮਾਂਡ ਕੀ ਕਰਦੀ ਹੈ:

  • ਭੇਜਦੀ ਹੈ GET ਰਿਕਵੈਸਟ ਤੁਹਾਡੇ ਸਥਾਨਕ API ਸਰਵਰ ਨੂੰ
  • ਟੈਸਟ ਕਰਦੀ ਹੈ ਕਨੈਕਸ਼ਨ ਅਤੇ ਸਰਵਰ ਦੇ ਜਵਾਬ ਦੀ ਪੁਸ਼ਟੀ ਕਰਦੀ ਹੈ
  • ਵਾਪਸ ਕਰਦੀ ਹੈ API ਵਰਜਨ ਜਾਣਕਾਰੀ ਜੇਕਰ ਸਭ ਕੁਝ ਢੰਗ ਨਾਲ ਕੰਮ ਕਰ ਰਿਹਾ ਹੈ

🧠 ਸਟੇਟ ਮੈਨੇਜਮੈਂਟ ਆਰਕੀਟੈਕਚਰ ਝਲਕ

mindmap
  root((State Management))
    Current Problems
      Session Loss
        Page Refresh Issues
        Browser Close Impact
        Variable Reset Problems
      Scattered Updates
        Multiple Modification Points
        Debugging Challenges
        Unpredictable Behavior
      Incomplete Cleanup
        Logout State Issues
        Memory Leaks
        Security Concerns
    Centralized Solutions
      Unified State Object
        Single Source of Truth
        Predictable Structure
        Scalable Foundation
      Controlled Updates
        Immutable Patterns
        Object.freeze Usage
        Function-Based Changes
      State Tracking
        History Management
        Debug Visibility
        Change Auditing
    Persistence Strategies
      localStorage Integration
        Session Continuity
        JSON Serialization
        Automatic Sync
      Data Freshness
        Server Refresh
        Stale Data Handling
        Balance Optimization
      Storage Optimization
        Minimal Data
        Performance Focus
        Security Considerations

ਮੁੱਖ ਅਸੂਲ: ਪੇਸ਼ੇਵਰ ਸਟੇਟ ਮੈਨੇਜਮੈਂਟ ਪੇਸ਼ਗੂਈਯੋਗਤਾ, ਪੇਰਸਿਸਟੈਂਸ ਅਤੇ ਪ੍ਰਦਰਸ਼ਨ ਨੂੰ ਸੰਤੁਲਿਤ ਕਰਦਾ ਹੈ ਤਾਂ ਜੋ ਭਰੋਸੇਯੋਗ ਯੂਜ਼ਰ ਅਨੁਭਵ ਬਣੇ ਜੋ ਸਧਾਰਨ ਇੰਟਰੈਕਸ਼ਨ ਤੋਂ ਜਟਿਲ ਐਪਲੀਕੇਸ਼ਨ ਵਰਕਫਲੋਜ਼ ਤੱਕ ਸਕੇਲ ਕਰਦੇ ਹਨ।


ਮੌਜੂਦਾ ਸਟੇਟ ਸਮੱਸਿਆਵਾਂ ਦੀ ਜਾਂਚ

ਜਿਵੇਂ ਸ਼ਰਲਾਕ ਹੋਮਜ਼ ਇੱਕ ਜੁਰਮ ਦੇ ਸਥਾਨ ਦੀ ਜਾਂਚ ਕਰਦਾ ਹੈ, ਅਸੀਂ ਆਪਣੀ ਮੌਜੂਦਾ ਲਾਗੂ ਕਰਨ ਦੀ ਪੂਰੀ ਸਮਝ ਲੈਣੀ ਹੈ ਜਦੋਂ ਤੱਕ ਅਸੀਂ ਯੂਜ਼ਰ ਸੈਸ਼ਨ ਗਾਇਬ ਹੋਣ ਦੀ ਸਮੱਸਿਆ ਦਾ ਹੱਲ ਨਹੀਂ ਲੱਭ ਸਕਦੇ।

ਆਓ ਇੱਕ ਸਧਾਰਨ ਪ੍ਰਯੋਗ ਕਰੀਏ ਜੋ ਸਟੇਟ ਮੈਨੇਜਮੈਂਟ ਦੀਆਂ ਮੁੱਢਲੀ ਚੁਣੌਤੀਆਂ ਨੂੰ ਪ੍ਰਗਟ ਕਰਦਾ ਹੈ:

🧪 ਇਹ ਡਾਇਗਨੋਸਟਿਕ ਟੈਸਟ ਕਰੋ:

  1. ਆਪਣੀ ਬੈਂਕਿੰਗ ਐਪ ਵਿੱਚ ਲੌਗਇਨ ਕਰੋ ਅਤੇ ਡੈਸ਼ਬੋਰਡ 'ਤੇ ਜਾਓ
  2. ਬ੍ਰਾਊਜ਼ਰ ਪੇਜ ਨੂੰ ਰੀਫ੍ਰੈਸ਼ ਕਰੋ
  3. ਦੇਖੋ ਕਿ ਤੁਹਾਡੀ ਲੌਗਇਨ ਸਥਿਤੀ ਨਾਲ ਕੀ ਹੁੰਦਾ ਹੈ

ਜੇਕਰ ਤੁਹਾਨੂੰ ਵਾਪਸ ਲੌਗਇਨ ਸਕ੍ਰੀਨ 'ਤੇ ਰੀਡਾਇਰੈਕਟ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਤਾਂ ਤੁਸੀਂ ਕਲਾਸਿਕ ਸਟੇਟ ਪੇਰਸਿਸਟੈਂਸ ਸਮੱਸਿਆ ਦੀ ਪਛਾਣ ਕੀਤੀ ਹੈ। ਇਹ ਵਿਹਾਰ ਇਸ ਲਈ ਹੁੰਦਾ ਹੈ ਕਿਉਂਕਿ ਸਾਡੀ ਮੌਜੂਦਾ ਲਾਗੂ ਕਰਨ ਵਾਲੀ ਯੂਜ਼ਰ ਡਾਟਾ ਨੂੰ ਜਾਵਾਸਕ੍ਰਿਪਟ ਵੈਰੀਏਬਲਾਂ ਵਿੱਚ ਸਟੋਰ ਕਰਦੀ ਹੈ ਜੋ ਹਰ ਪੇਜ ਲੋਡ ਨਾਲ ਰੀਸੈਟ ਹੋ ਜਾਂਦੇ ਹਨ।

ਮੌਜੂਦਾ ਲਾਗੂ ਕਰਨ ਵਾਲੀਆਂ ਸਮੱਸਿਆਵਾਂ:

ਸਾਡੇ ਪਿਛਲੇ ਪਾਠ ਤੋਂ ਸਧਾਰਨ account ਵੈਰੀਏਬਲ ਤਿੰਨ ਮਹੱਤਵਪੂਰਨ ਸਮੱਸਿਆਵਾਂ ਪੈਦਾ ਕਰਦਾ ਹੈ ਜੋ ਯੂਜ਼ਰ ਅਨੁਭਵ ਅਤੇ ਕੋਡ ਸੰਭਾਲਯੋਗਤਾ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰਦੇ ਹਨ:

ਸਮੱਸਿਆ ਤਕਨੀਕੀ ਕਾਰਨ ਯੂਜ਼ਰ ਪ੍ਰਭਾਵ
ਸੈਸ਼ਨ ਗੁਆਚ ਪੇਜ ਰੀਫ੍ਰੈਸ਼ ਜਾਵਾਸਕ੍ਰਿਪਟ ਵੈਰੀਏਬਲਾਂ ਨੂੰ ਸਾਫ ਕਰਦਾ ਹੈ ਯੂਜ਼ਰਾਂ ਨੂੰ ਵਾਰ-ਵਾਰ ਦੁਬਾਰਾ ਪ੍ਰਮਾਣਿਕਤਾ ਕਰਨੀ ਪੈਂਦੀ ਹੈ
ਬਿਖਰੀਆਂ ਅੱਪਡੇਟਾਂ ਕਈ ਫੰਕਸ਼ਨ ਸਟੇਟ ਨੂੰ ਸਿੱਧੇ ਤੌਰ 'ਤੇ ਸੋਧਦੇ ਹਨ ਡੀਬੱਗਿੰਗ ਬਹੁਤ ਮੁਸ਼ਕਲ ਹੋ ਜਾਂਦੀ ਹੈ
ਅਧੂਰੀ ਸਾਫ਼-ਸਫਾਈ ਲੌਗਆਉਟ ਸਾਰੇ ਸਟੇਟ ਰਿਫਰੈਂਸਾਂ ਨੂੰ ਸਾਫ਼ ਨਹੀਂ ਕਰਦਾ ਸੰਭਾਵਿਤ ਸੁਰੱਖਿਆ ਅਤੇ ਗੋਪਨੀਯਤਾ ਚਿੰਤਾਵਾਂ

ਆਰਕੀਟੈਕਚਰਲ ਚੁਣੌਤੀ:

ਜਿਵੇਂ ਟਾਇਟੈਨਿਕ ਦੇ ਕਮਪਾਰਟਮੈਂਟਲ ਡਿਜ਼ਾਈਨ ਨੇ ਮਜ਼ਬੂਤ ਲੱਗਣ ਵਾਲਾ ਦਿਖਾਇਆ ਜਦੋਂ ਤੱਕ ਕਈ ਕਮਪਾਰਟਮੈਂਟ ਇੱਕੋ ਸਮੇਂ ਵਿੱਚ ਭਰ ਗਏ, ਇਹ ਸਮੱਸਿਆਵਾਂ ਨੂੰ ਵਿਅਕਤੀਗਤ ਤੌਰ 'ਤੇ ਠੀਕ ਕਰਨਾ ਅਧਾਰਭੂਤ ਆਰਕੀਟੈਕਚਰਲ ਸਮੱਸਿਆ ਦਾ ਹੱਲ ਨਹੀਂ ਕਰੇਗਾ। ਸਾਨੂੰ ਇੱਕ ਵਿਆਪਕ ਸਟੇਟ ਮੈਨੇਜਮੈਂਟ ਹੱਲ ਦੀ ਲੋੜ ਹੈ।

💡 ਅਸੀਂ ਅਸਲ ਵਿੱਚ ਇੱਥੇ ਕੀ ਪ੍ਰਾਪਤ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰ ਰਹੇ ਹਾਂ?

ਸਟੇਟ ਮੈਨੇਜਮੈਂਟ ਅਸਲ ਵਿੱਚ ਦੋ ਮੁੱਢਲੇ ਪਹੇਲੀਆਂ ਨੂੰ ਹੱਲ ਕਰਨ ਬਾਰੇ ਹੈ:

  1. ਮੇਰਾ ਡਾਟਾ ਕਿੱਥੇ ਹੈ?: ਇਹ ਪਤਾ ਲਗਾਉਣਾ ਕਿ ਸਾਡੇ ਕੋਲ ਕਿਹੜੀ ਜਾਣਕਾਰੀ ਹੈ ਅਤੇ ਇਹ ਕਿੱਥੋਂ ਆ ਰਹੀ ਹੈ
  2. ਕੀ ਸਭ ਇੱਕੋ ਪੰਨੇ 'ਤੇ ਹਨ?: ਇਹ ਯਕੀਨੀ ਬਣਾਉਣਾ ਕਿ ਜੋ ਯੂਜ਼ਰ ਦੇਖਦੇ ਹਨ ਉਹ ਅਸਲ ਵਿੱਚ ਹੋ ਰਹੇ ਨਾਲ ਮੇਲ ਖਾਂਦਾ ਹੈ

ਸਾਡਾ ਖੇਡ ਯੋਜਨਾ:

ਅਸੀਂ ਆਪਣੀ ਪੂਛ-ਪੂਛ ਕਰਨ ਦੀ ਬਜਾਏ ਇੱਕ ਕੇਂਦਰੀਕ੍ਰਿਤ ਸਟੇਟ ਮੈਨੇਜਮੈਂਟ ਸਿਸਟਮ ਬਣਾਉਣ ਜਾ ਰਹੇ ਹਾਂ। ਇਸਨੂੰ ਇੱਕ ਬਹੁਤ ਹੀ ਸੁਧਰੇ ਹੋਏ ਵਿਅਕਤੀ ਵਾਂਗ ਸੋਚੋ ਜੋ ਸਾਰੇ ਮਹੱਤਵਪੂਰਨ ਚੀਜ਼ਾਂ ਦਾ ਇੰਚਾਰਜ ਹੈ:

HTML, ਯੂਜ਼ਰ ਕਾਰਵਾਈਆਂ ਅਤੇ ਸਟੇਟ ਦੇ ਵਿਚਕਾਰ ਡਾਟਾ ਫਲੋਜ਼ ਦਿਖਾਉਣ ਵਾਲੀ ਸਕੀਮਾ

flowchart TD
    A[User Action] --> B[Event Handler]
    B --> C[updateState Function]
    C --> D{State Validation}
    D -->|Valid| E[Create New State]
    D -->|Invalid| F[Error Handling]
    E --> G[Object.freeze]
    G --> H[Update localStorage]
    H --> I[Trigger UI Update]
    I --> J[User Sees Changes]
    F --> K[User Sees Error]
    
    subgraph "State Management Layer"
        C
        E
        G
    end
    
    subgraph "Persistence Layer"
        H
        L[localStorage]
        H -.-> L
    end

ਇਸ ਡਾਟਾ ਫਲੋ ਨੂੰ ਸਮਝਣਾ:

  • ਕੇਂਦਰੀਕ੍ਰਿਤ ਸਾਰੇ ਐਪਲੀਕੇਸ਼ਨ ਸਟੇਟ ਨੂੰ ਇੱਕ ਸਥਾਨ ਵਿੱਚ
  • ਰੂਟ ਸਾਰੇ ਸਟੇਟ ਬਦਲਾਅ ਨੂੰ ਨਿਯੰਤਰਿਤ ਫੰਕਸ਼ਨਾਂ ਦੁਆਰਾ
  • ਯਕੀਨੀ ਬਣਾਉਣਾ ਕਿ UI ਮੌਜੂਦਾ ਸਟੇਟ ਨਾਲ ਸਿੰਕ੍ਰੋਨਾਈਜ਼ ਰਹੇ
  • ਪ੍ਰਦਾਨ ਕਰਨਾ ਡਾਟਾ ਮੈਨੇਜਮੈਂਟ ਲਈ ਇੱਕ ਸਪਸ਼ਟ, ਪੇਸ਼ਗੂਈਯੋਗ ਪੈਟਰਨ

💡 ਪੇਸ਼ੇਵਰ ਅੰਦਰੂਨੀ ਜਾਣਕਾਰੀ: ਇਹ ਪਾਠ ਮੁੱਢਲੇ ਅਸੂਲਾਂ 'ਤੇ ਧਿਆਨ ਕੇਂਦਰਿਤ ਕਰਦਾ ਹੈ। ਜਟਿਲ ਐਪਲੀਕੇਸ਼ਨਾਂ ਲਈ, Redux ਵਰਗੀਆਂ ਲਾਇਬ੍ਰੇਰੀਆਂ ਹੋਰ ਉੱਨਤ ਸਟੇਟ ਮੈਨੇਜਮੈਂਟ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਪ੍ਰਦਾਨ ਕਰਦੀਆਂ ਹਨ। ਇਹ ਮੁੱਢਲੇ ਅਸੂਲਾਂ ਨੂੰ ਸਮਝਣਾ ਤੁਹਾਨੂੰ ਕਿਸੇ ਵੀ ਸਟੇਟ ਮੈਨੇਜਮੈਂਟ ਲਾਇਬ੍ਰੇਰੀ ਵਿੱਚ ਮਾਹਰ ਬਣਾਉਣ ਵਿੱਚ ਮਦਦ ਕਰੇਗਾ।

⚠️ ਉੱਨਤ ਵਿਸ਼ਾ: ਅਸੀਂ ਸਟੇਟ ਬਦਲਾਅ ਦੁਆਰਾ ਸਵੈਚਾਲਕ UI ਅੱਪਡੇਟਾਂ ਨੂੰ ਕਵਰ ਨਹੀਂ ਕਰਾਂਗੇ, ਕਿਉਂਕਿ ਇਹ Reactive Programming ਅਸੂਲਾਂ ਨੂੰ ਸ਼ਾਮਲ ਕਰਦਾ ਹੈ। ਇਸਨੂੰ ਤੁਹਾਡੇ ਸਿੱਖਣ ਦੇ ਸਫਰ ਲਈ ਇੱਕ ਸ਼ਾਨਦਾਰ ਅਗਲਾ ਕਦਮ ਸਮਝੋ!

ਟਾਸਕ: ਸਟੇਟ ਸਟ੍ਰਕਚਰ ਨੂੰ ਕੇਂਦਰੀਕ੍ਰਿਤ ਕਰੋ

ਆਓ ਆਪਣੀ ਬਿਖਰੀ ਸਟੇਟ ਮੈਨੇਜਮੈਂਟ ਨੂੰ ਇੱਕ ਕੇਂਦਰੀਕ੍ਰਿਤ ਸਿਸਟਮ ਵਿੱਚ ਬਦਲਣਾ ਸ਼ੁਰੂ ਕਰੀਏ। ਇਹ ਪਹਿਲਾ ਕਦਮ ਉਹਨਾਂ ਸਾਰੇ ਸੁਧਾਰਾਂ ਲਈ ਬੁਨਿਆਦ ਸਥਾਪਿਤ ਕਰਦਾ ਹੈ ਜੋ ਅੱਗੇ ਆਉਣਗੇ।

ਕਦਮ 1: ਇੱਕ ਕੇਂਦਰੀ ਸਟੇਟ ਆਬਜੈਕਟ ਬਣਾਓ

ਸਧਾਰਨ account ਡਿਕਲੇਰੇਸ਼ਨ ਨੂੰ ਬਦਲੋ:

let account = null;

ਇੱਕ ਸਟ੍ਰਕਚਰਡ ਸਟੇਟ ਆਬਜੈਕਟ ਨਾਲ:

let state = {
  account: null
};

ਇਹ ਬਦਲਾਅ ਕਿਉਂ ਮਹੱਤਵਪੂਰਨ ਹੈ:

  • ਕੇਂਦਰੀਕ੍ਰਿਤ ਸਾਰੇ ਐਪਲੀਕੇਸ਼ਨ ਡਾਟਾ ਨੂੰ ਇੱਕ ਸਥਾਨ ਵਿੱਚ
  • ਤਿਆਰ ਕਰਦਾ ਹੈ ਸਟ੍ਰਕਚਰ ਨੂੰ ਬਾਅਦ ਵਿੱਚ ਹੋਰ ਸਟੇਟ ਪ੍ਰਾਪਰਟੀਜ਼ ਸ਼ਾਮਲ ਕਰਨ ਲਈ
  • ਬਣਾਉਂਦਾ ਹੈ ਸਟੇਟ ਅਤੇ ਹੋਰ ਵੈਰੀਏਬਲਾਂ ਦੇ ਵਿਚਕਾਰ ਇੱਕ ਸਪਸ਼ਟ ਸੀਮਾ
  • ਸਥਾਪਿਤ ਕਰਦਾ ਹੈ ਇੱਕ ਪੈਟਰਨ ਜੋ ਤੁਹਾਡੀ ਐਪ ਦੇ ਵਧਣ ਦੇ ਨਾਲ ਸਕੇਲ ਕਰਦਾ ਹੈ

ਕਦਮ 2: ਸਟੇਟ ਐਕਸੈਸ ਪੈਟਰਨਾਂ ਨੂੰ ਅੱਪਡੇਟ ਕਰੋ

ਆਪਣੇ ਫੰਕਸ਼ਨਾਂ ਨੂੰ ਨਵੇਂ ਸਟੇਟ ਸਟ੍ਰਕਚਰ ਦੀ ਵਰਤੋਂ ਕਰਨ ਲਈ ਅੱਪਡੇਟ ਕਰੋ:

register() ਅਤੇ login() ਫੰਕਸ਼ਨਾਂ ਵਿੱਚ, ਬਦਲੋ:

account = ...

ਨਾਲ:

state.account = ...

updateDashboard() ਫੰਕਸ਼ਨ ਵਿੱਚ, ਇਹ ਲਾਈਨ ਸ਼ੁਰੂ 'ਤੇ ਸ਼ਾਮਲ ਕਰੋ:

const account = state.account;

**ਇਹ ਅੱਪਡੇਟਾਂ ਕੀ | ਇਹ ਕਿੰਨਾ ਸਮਾਂ ਰਹੇ? | ਲੌਗਇਨ ਸਟੇਟ ਵਿਰੁੱਧ ਅਸਥਾਈ UI ਪਸੰਦਾਂ | ਸਟੋਰੇਜ ਦੀ ਮਿਆਦ ਚੁਣੋ | | ਕੀ ਸਰਵਰ ਨੂੰ ਇਸ ਦੀ ਲੋੜ ਹੈ? | ਪ੍ਰਮਾਣਿਕਤਾ ਟੋਕਨ ਵਿਰੁੱਧ UI ਸੈਟਿੰਗਾਂ | ਸਾਂਝੇ ਕਰਨ ਦੀਆਂ ਜ਼ਰੂਰਤਾਂ ਦਾ ਨਿਰਣਯ ਕਰੋ |

ਬ੍ਰਾਊਜ਼ਰ ਸਟੋਰੇਜ ਵਿਕਲਪ:

ਆਧੁਨਿਕ ਬ੍ਰਾਊਜ਼ਰ ਵੱਖ-ਵੱਖ ਸਟੋਰੇਜ ਮਕੈਨਿਜ਼ਮ ਪ੍ਰਦਾਨ ਕਰਦੇ ਹਨ, ਜੋ ਹਰ ਕਿਸਮ ਦੇ ਵਰਤੋਂ ਦੇ ਕੇਸਾਂ ਲਈ ਬਣਾਏ ਗਏ ਹਨ:

ਮੁੱਖ ਸਟੋਰੇਜ APIs:

  1. localStorage: ਸਥਾਈ ਕੀ/ਮੁੱਲ ਸਟੋਰੇਜ

    • ਡਾਟਾ ਬ੍ਰਾਊਜ਼ਰ ਸੈਸ਼ਨ ਦੇ ਦੌਰਾਨ ਅਨੰਤ ਸਮੇਂ ਲਈ ਸਥਾਈ ਰਹਿੰਦੀ ਹੈ
    • ਬ੍ਰਾਊਜ਼ਰ ਰੀਸਟਾਰਟ ਅਤੇ ਕੰਪਿਊਟਰ ਰੀਬੂਟ ਤੋਂ ਬਾਅਦ ਵੀ ਸੁਰੱਖਿਅਤ ਰਹਿੰਦੀ ਹੈ
    • ਵੈਬਸਾਈਟ ਡੋਮੇਨ ਲਈ ਸੀਮਿਤ
    • ਯੂਜ਼ਰ ਪਸੰਦਾਂ ਅਤੇ ਲੌਗਇਨ ਸਟੇਟ ਲਈ ਬਹੁਤ ਵਧੀਆ
  2. sessionStorage: ਅਸਥਾਈ ਸੈਸ਼ਨ ਸਟੋਰੇਜ

    • localStorage ਵਾਂਗ ਹੀ ਸੈਸ਼ਨ ਦੇ ਦੌਰਾਨ ਕੰਮ ਕਰਦੀ ਹੈ
    • ਆਪਣੇ ਆਪ ਬ੍ਰਾਊਜ਼ਰ ਟੈਬ ਬੰਦ ਹੋਣ 'ਤੇ ਸਾਫ਼ ਹੋ ਜਾਂਦੀ ਹੈ
    • ਅਸਥਾਈ ਡਾਟਾ ਲਈ ਬਹੁਤ ਵਧੀਆ ਜੋ ਸਥਾਈ ਨਹੀਂ ਰਹਿਣਾ ਚਾਹੀਦਾ
  3. HTTP Cookies: ਸਰਵਰ-ਸਾਂਝੇ ਸਟੋਰੇਜ

    • ਹਰ ਸਰਵਰ ਰਿਕਵੈਸਟ ਨਾਲ ਆਪਣੇ ਆਪ ਭੇਜੀ ਜਾਂਦੀ ਹੈ
    • ਪ੍ਰਮਾਣਿਕਤਾ ਟੋਕਨ ਲਈ ਬਹੁਤ ਵਧੀਆ
    • ਆਕਾਰ ਵਿੱਚ ਸੀਮਿਤ ਅਤੇ ਪ੍ਰਦਰਸ਼ਨ 'ਤੇ ਅਸਰ ਪਾ ਸਕਦੀ ਹੈ

ਡਾਟਾ ਸਿਰੀਅਲਾਈਜ਼ੇਸ਼ਨ ਦੀ ਲੋੜ:

localStorage ਅਤੇ sessionStorage ਸਿਰਫ਼ strings ਸਟੋਰ ਕਰਦੇ ਹਨ:

// Convert objects to JSON strings for storage
const accountData = { user: 'john', balance: 150 };
localStorage.setItem('account', JSON.stringify(accountData));

// Parse JSON strings back to objects when retrieving
const savedAccount = JSON.parse(localStorage.getItem('account'));

ਸਿਰੀਅਲਾਈਜ਼ੇਸ਼ਨ ਨੂੰ ਸਮਝਣਾ:

  • JavaScript ਆਬਜੈਕਟ ਨੂੰ JSON strings ਵਿੱਚ ਬਦਲਦਾ JSON.stringify() ਦੀ ਵਰਤੋਂ ਕਰਕੇ
  • JSON ਤੋਂ ਆਬਜੈਕਟ ਨੂੰ ਮੁੜ ਬਣਾਉਂਦਾ JSON.parse() ਦੀ ਵਰਤੋਂ ਕਰਕੇ
  • ਆਟੋਮੈਟਿਕ ਤੌਰ 'ਤੇ ਜਟਿਲ nested ਆਬਜੈਕਟ ਅਤੇ arrays ਨੂੰ ਹੈਂਡਲ ਕਰਦਾ ਹੈ
  • ਫੰਕਸ਼ਨ, undefined values, ਅਤੇ circular references 'ਤੇ ਫੇਲ੍ਹ ਹੁੰਦਾ ਹੈ

💡 ਅਗਾਂਹ ਦਾ ਵਿਕਲਪ: ਜਟਿਲ offline ਐਪਲੀਕੇਸ਼ਨਾਂ ਲਈ ਜਿਨ੍ਹਾਂ ਵਿੱਚ ਵੱਡੇ ਡਾਟਾਸੈਟ ਹਨ, IndexedDB API ਨੂੰ ਵਿਚਾਰੋ। ਇਹ ਇੱਕ ਪੂਰੀ client-side ਡਾਟਾਬੇਸ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ ਪਰ ਇਸ ਨੂੰ ਲਾਗੂ ਕਰਨ ਲਈ ਵਧੇਰੇ ਜਟਿਲਤਾ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ।

quadrantChart
    title Browser Storage Options
    x-axis Low Complexity --> High Complexity
    y-axis Short Duration --> Long Duration
    
    quadrant-1 Professional Tools
    quadrant-2 Simple Persistence
    quadrant-3 Temporary Storage
    quadrant-4 Advanced Systems
    
    localStorage: [0.3, 0.8]
    sessionStorage: [0.2, 0.2]
    HTTP Cookies: [0.6, 0.7]
    IndexedDB: [0.9, 0.9]
    Memory Variables: [0.1, 0.1]

ਟਾਸਕ: localStorage Persistence ਲਾਗੂ ਕਰੋ

ਆਓ ਸਥਾਈ ਸਟੋਰੇਜ ਲਾਗੂ ਕਰੀਏ ਤਾਂ ਕਿ ਯੂਜ਼ਰ explicit ਤੌਰ 'ਤੇ ਲੌਗਆਉਟ ਕਰਨ ਤੱਕ ਲੌਗਇਨ ਰਹੇ। ਅਸੀਂ localStorage ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਖਾਤੇ ਦੇ ਡਾਟਾ ਨੂੰ ਬ੍ਰਾਊਜ਼ਰ ਸੈਸ਼ਨ ਦੇ ਦੌਰਾਨ ਸਟੋਰ ਕਰਾਂਗੇ।

ਪਹਿਲਾ ਕਦਮ: ਸਟੋਰੇਜ ਕਨਫਿਗਰੇਸ਼ਨ ਨੂੰ ਪਰਿਭਾਸ਼ਿਤ ਕਰੋ

const storageKey = 'savedAccount';

ਇਹ constant ਕੀ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ:

  • ਸਾਡੇ ਸਟੋਰ ਕੀਤੇ ਡਾਟਾ ਲਈ ਇੱਕ ਸਥਿਰ ਪਛਾਣਕਰਤਾ ਬਣਾਉਂਦਾ ਹੈ
  • ਸਟੋਰੇਜ ਕੀ ਰਿਫਰੈਂਸ ਵਿੱਚ ਟਾਈਪੋਜ਼ ਨੂੰ ਰੋਕਦਾ ਹੈ
  • ਸਟੋਰੇਜ ਕੀ ਨੂੰ ਬਦਲਣਾ ਆਸਾਨ ਬਣਾਉਂਦਾ ਹੈ
  • ਮੈਂਟੇਨਬਲ ਕੋਡ ਲਈ ਸ੍ਰੇਸ਼ਠ ਪ੍ਰਥਾਵਾਂ ਦੀ ਪਾਲਣਾ ਕਰਦਾ ਹੈ

ਦੂਜਾ ਕਦਮ: Automatic Persistence ਸ਼ਾਮਲ ਕਰੋ

updateState() ਫੰਕਸ਼ਨ ਦੇ ਅੰਤ ਵਿੱਚ ਇਹ ਲਾਈਨ ਸ਼ਾਮਲ ਕਰੋ:

localStorage.setItem(storageKey, JSON.stringify(state.account));

ਇੱਥੇ ਕੀ ਹੁੰਦਾ ਹੈ:

  • ਖਾਤੇ ਦੇ ਆਬਜੈਕਟ ਨੂੰ JSON string ਵਿੱਚ ਬਦਲਦਾ ਹੈ ਸਟੋਰੇਜ ਲਈ
  • ਸਾਡੇ ਸਥਿਰ ਸਟੋਰੇਜ ਕੀ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਡਾਟਾ ਸੇਵ ਕਰਦਾ ਹੈ
  • ਜਦੋਂ ਵੀ ਸਟੇਟ ਵਿੱਚ ਬਦਲਾਅ ਹੁੰਦਾ ਹੈ ਤਾਂ ਆਪਣੇ ਆਪ ਚਲਦਾ ਹੈ
  • ਸੁਨਿਸ਼ਚਿਤ ਕਰਦਾ ਹੈ ਕਿ ਸਟੋਰ ਕੀਤਾ ਡਾਟਾ ਹਮੇਸ਼ਾ ਮੌਜੂਦਾ ਸਟੇਟ ਨਾਲ ਸਿੰਕ੍ਰੋਨਾਈਜ਼ ਰਹੇ

💡 ਆਰਕੀਟੈਕਚਰ ਦਾ ਫਾਇਦਾ: ਕਿਉਂਕਿ ਅਸੀਂ ਸਾਰੇ ਸਟੇਟ ਅਪਡੇਟ ਨੂੰ updateState() ਵਿੱਚ ਕੇਂਦਰੀਕ੍ਰਿਤ ਕੀਤਾ ਹੈ, persistence ਸ਼ਾਮਲ ਕਰਨ ਲਈ ਸਿਰਫ਼ ਇੱਕ ਲਾਈਨ ਕੋਡ ਦੀ ਲੋੜ ਸੀ। ਇਹ ਚੰਗੇ ਆਰਕੀਟੈਕਚਰਲ ਫੈਸਲੇ ਦੀ ਤਾਕਤ ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ!

ਤੀਜਾ ਕਦਮ: ਐਪ ਲੋਡ 'ਤੇ ਸਟੇਟ ਮੁੜ ਸਥਾਪਿਤ ਕਰੋ

ਸੇਵ ਕੀਤੇ ਡਾਟਾ ਨੂੰ ਮੁੜ ਸਥਾਪਿਤ ਕਰਨ ਲਈ ਇੱਕ initialization ਫੰਕਸ਼ਨ ਬਣਾਓ:

function init() {
  const savedAccount = localStorage.getItem(storageKey);
  if (savedAccount) {
    updateState('account', JSON.parse(savedAccount));
  }

  // Our previous initialization code
  window.onpopstate = () => updateRoute();
  updateRoute();
}

init();

ਮੁੜ ਸਥਾਪਨਾ ਪ੍ਰਕਿਰਿਆ ਨੂੰ ਸਮਝਣਾ:

  • localStorage ਤੋਂ ਪਹਿਲਾਂ ਸੇਵ ਕੀਤੇ ਖਾਤੇ ਦੇ ਡਾਟਾ ਨੂੰ ਪ੍ਰਾਪਤ ਕਰਦਾ ਹੈ
  • JSON string ਨੂੰ ਮੁੜ JavaScript ਆਬਜੈਕਟ ਵਿੱਚ ਬਦਲਦਾ ਹੈ
  • ਸਾਡੇ ਨਿਯੰਤਰਿਤ ਅਪਡੇਟ ਫੰਕਸ਼ਨ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਸਟੇਟ ਨੂੰ ਅਪਡੇਟ ਕਰਦਾ ਹੈ
  • ਯੂਜ਼ਰ ਦੇ ਸੈਸ਼ਨ ਨੂੰ ਆਪਣੇ ਆਪ ਮੁੜ ਸਥਾਪਿਤ ਕਰਦਾ ਹੈ
  • **ਰੂਟ ਅਪਡੇਟ ਤੋਂ ਪਹਿਲਾਂ ਚਲਦਾ ਹੈ ਤਾਂ ਕਿ ਸਟੇਟ ਉਪਲਬਧ ਹੋਵੇ

ਚੌਥਾ ਕਦਮ: Default Route ਨੂੰ Optimize ਕਰੋ

Persistence ਦਾ ਫਾਇਦਾ ਲੈਣ ਲਈ default route ਨੂੰ ਅਪਡੇਟ ਕਰੋ:

updateRoute() ਵਿੱਚ, ਇਹ ਬਦਲੋ:

// Replace: return navigate('/login');
return navigate('/dashboard');

ਇਹ ਬਦਲਾਅ ਕਿਉਂ ਸਹੀ ਹੈ:

  • ਸਾਡੇ ਨਵੇਂ persistence ਸਿਸਟਮ ਦਾ ਪ੍ਰਭਾਵਸ਼ਾਲੀ ਤੌਰ 'ਤੇ ਲਾਭ ਲੈਂਦਾ ਹੈ
  • ਡੈਸ਼ਬੋਰਡ ਨੂੰ authentication ਚੈੱਕ ਕਰਨ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ
  • ਜੇਕਰ ਕੋਈ ਸੇਵ ਕੀਤੀ ਸੈਸ਼ਨ ਮੌਜੂਦ ਨਹੀਂ ਹੈ ਤਾਂ ਆਪਣੇ ਆਪ ਲੌਗਇਨ 'ਤੇ ਰੀਡਾਇਰੈਕਟ ਕਰਦਾ ਹੈ
  • ਇੱਕ ਵਧੀਆ ਯੂਜ਼ਰ ਅਨੁਭਵ ਬਣਾਉਂਦਾ ਹੈ

ਤੁਹਾਡੀ ਲਾਗੂ ਕੀਤੀ ਗਈ ਸਿਸਟਮ ਦੀ ਜਾਂਚ:

  1. ਆਪਣੇ ਬੈਂਕਿੰਗ ਐਪ ਵਿੱਚ ਲੌਗਇਨ ਕਰੋ
  2. ਬ੍ਰਾਊਜ਼ਰ ਪੇਜ ਨੂੰ ਰੀਫ੍ਰੈਸ਼ ਕਰੋ
  3. ਪੁਸ਼ਟੀ ਕਰੋ ਕਿ ਤੁਸੀਂ ਲੌਗਇਨ ਰਹੇ ਹੋ ਅਤੇ ਡੈਸ਼ਬੋਰਡ 'ਤੇ ਹੋ
  4. ਬ੍ਰਾਊਜ਼ਰ ਨੂੰ ਬੰਦ ਕਰੋ ਅਤੇ ਮੁੜ ਖੋਲ੍ਹੋ
  5. ਮੁੜ ਆਪਣੇ ਐਪ 'ਤੇ ਜਾਓ ਅਤੇ ਪੁਸ਼ਟੀ ਕਰੋ ਕਿ ਤੁਸੀਂ ਹਾਲੇ ਵੀ ਲੌਗਇਨ ਹੋ

🎉 ਸਫਲਤਾ ਪ੍ਰਾਪਤ ਕੀਤੀ: ਤੁਸੀਂ ਸਥਾਈ ਸਟੇਟ ਮੈਨੇਜਮੈਂਟ ਨੂੰ ਸਫਲਤਾਪੂਰਵਕ ਲਾਗੂ ਕੀਤਾ ਹੈ! ਹੁਣ ਤੁਹਾਡਾ ਐਪ ਇੱਕ ਪੇਸ਼ੇਵਰ ਵੈੱਬ ਐਪਲੀਕੇਸ਼ਨ ਵਾਂਗ ਕੰਮ ਕਰਦਾ ਹੈ।


ਅਸਵੀਕਰਤਾ:
ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ Co-op Translator ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਹਾਲਾਂਕਿ ਅਸੀਂ ਸਹੀ ਹੋਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦੇ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁੱਤੀਆਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਮੂਲ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਇਸਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਅਧਿਕਾਰਤ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੀ ਵਰਤੋਂ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ।