Bird
Raised Fist0
React Nativemobile~10 mins

State management comparison in React Native - UI Render Trace

Choose your learning style10 modes available
Component - State management comparison

This UI component shows a simple counter app demonstrating two ways to manage state in React Native: using local component state with useState and using a global state with React Context. It helps learners see how state updates affect the UI and which parts re-render.

Widget Tree
App
├─ LocalStateCounter
│  ├─ View
│  │  ├─ Text (shows count)
│  │  └─ Button (increments count)
└─ GlobalStateCounter
   ├─ View
   │  ├─ Text (shows count from context)
   │  └─ Button (increments count in context)
The root component <code>App</code> contains two child components side by side: <code>LocalStateCounter</code> and <code>GlobalStateCounter</code>. Each has a <code>View</code> with a <code>Text</code> showing the current count and a <code>Button</code> to increase the count. The first uses local state, the second uses shared global state via React Context.
Render Trace - 5 Steps
Step 1: App
Step 2: LocalStateCounter
Step 3: GlobalStateCounter
Step 4: LocalStateCounter Button Press
Step 5: GlobalStateCounter Button Press
State Change - Re-render
Trigger:User presses either 'Increment Local' or 'Increment Global' button
Before
Local count and global count both 0
→
After
Either local count or global count increments by 1
Re-renders:Pressing local button re-renders only LocalStateCounter; pressing global button re-renders GlobalStateCounter and any other components consuming the context
UI Quiz - 3 Questions
Test your understanding
When you press the 'Increment Local' button, which part of the UI updates?
ABoth counters update
BOnly the LocalStateCounter updates
COnly the GlobalStateCounter updates
DNo counters update
Key Insight
Using local state with useState is simple and isolated to one component, good for small, independent parts. React Context provides a way to share state across many components, useful for global data like user info or theme. Understanding when to use each helps build efficient and maintainable apps.

Practice

(1/5)
1. Which React Native state management method is best for simple, local component state?
easy
A. Redux
B. useState
C. Context API
D. MobX

Solution

  1. Step 1: Understand local state needs

    Local state means data used only inside one component, like a toggle or input value.
  2. Step 2: Match state method to simplicity

    useState is designed for simple, local state inside functional components.
  3. Final Answer:

    useState -> Option B
  4. Quick Check:

    Simple local state = useState [OK]
Hint: Simple local state? Use useState hook [OK]
Common Mistakes:
  • Choosing Redux for simple local state
  • Confusing Context API with local state
  • Thinking MobX is simpler than useState
2. Which of the following is the correct syntax to declare a state variable using useState in React Native?
easy
A. state count = useState(0);
B. let count = useState(0);
C. var count, setCount = useState(0);
D. const [count, setCount] = useState(0);

Solution

  1. Step 1: Recall useState syntax

    The correct syntax uses array destructuring: const [value, setter] = useState(initialValue);
  2. Step 2: Check each option

    const [count, setCount] = useState(0); matches the correct syntax exactly.
  3. Final Answer:

    const [count, setCount] = useState(0); -> Option D
  4. Quick Check:

    useState syntax = const [value, setter] = useState(initial) [OK]
Hint: useState always returns [value, setter] array [OK]
Common Mistakes:
  • Using let or var instead of const
  • Not using array destructuring
  • Trying to declare state with 'state' keyword
3. What will be the output of this React Native code snippet?
const [count, setCount] = useState(0);
setCount(count + 1);
setCount(count + 1);
console.log(count);
medium
A. 0
B. 1
C. 2
D. Error

Solution

  1. Step 1: Understand state updates are asynchronous

    Calling setCount twice with count + 1 uses the same stale value of count (0), so both setCount calls set count to 1.
  2. Step 2: Check console.log output

    console.log(count) runs before state updates complete, so it logs the initial value 0.
  3. Final Answer:

    0 -> Option A
  4. Quick Check:

    State updates async, console logs old value [OK]
Hint: State updates are async; console logs old value [OK]
Common Mistakes:
  • Expecting count to be 2 immediately
  • Thinking setCount updates synchronously
  • Ignoring that console.log runs before update
4. Identify the error in this React Native state update code:
const [items, setItems] = useState([]);
function addItem(newItem) {
  items.push(newItem);
  setItems(items);
}
medium
A. Directly mutating state array before setItems
B. Using useState with an array is invalid
C. Missing return statement in addItem
D. setItems should be called without arguments

Solution

  1. Step 1: Check how state is updated

    The code mutates the existing array with push, which is not allowed because state must be immutable.
  2. Step 2: Understand correct update method

    Instead, create a new array copy with the new item and pass it to setItems.
  3. Final Answer:

    Directly mutating state array before setItems -> Option A
  4. Quick Check:

    State must be immutable; don't mutate arrays [OK]
Hint: Never mutate state directly; always create new objects [OK]
Common Mistakes:
  • Mutating arrays or objects directly
  • Thinking useState can't hold arrays
  • Calling setItems with no arguments
5. You have a React Native app with multiple screens needing to share user login status. Which state management approach is best?
hard
A. Use useState in each screen separately
B. Use inline styles to store login state
C. Use React Context API to share login state globally
D. Use local variables in each screen

Solution

  1. Step 1: Identify need for shared state

    Login status must be accessible across multiple screens, so state must be shared globally.
  2. Step 2: Choose appropriate state management

    React Context API allows sharing state across components without prop drilling, ideal for global data like login status.
  3. Final Answer:

    Use React Context API to share login state globally -> Option C
  4. Quick Check:

    Shared state across screens = Context API [OK]
Hint: Share global state with Context API, not local useState [OK]
Common Mistakes:
  • Using separate useState in each screen causing inconsistent state
  • Trying to store state in local variables
  • Confusing styles with state
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard