State management helps your app remember and update information as users interact with it. It keeps your app's data organized and consistent.
State management comparison in React Native
const [state, setState] = React.useState(initialValue);
useState is a React hook to create local state inside a component.
state holds the current value, and setState updates it.
count starting at 0.const [count, setCount] = React.useState(0);name starting empty.const [name, setName] = React.useState('');items starting empty.const [items, setItems] = React.useState([]);
This simple app shows a number and a button. Each time you press the button, the number goes up by one. It uses useState to remember the count.
import React, { useState } from 'react'; import { View, Text, Button } from 'react-native'; export default function Counter() { const [count, setCount] = useState(0); return ( <View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}> <Text style={{ fontSize: 24, marginBottom: 10 }}>Count: {count}</Text> <Button title="Increase" onPress={() => setCount(count + 1)} /> </View> ); }
Local state with useState is good for simple, component-specific data.
For bigger apps, you might use libraries like Redux or Context API to share state across many components.
Always update state using the setter function to keep your app in sync.
State management keeps your app data organized and interactive.
useState is the easiest way to add state in React Native components.
Choose the right state method based on your app size and data sharing needs.
Practice
Solution
Step 1: Understand local state needs
Local state means data used only inside one component, like a toggle or input value.Step 2: Match state method to simplicity
useStateis designed for simple, local state inside functional components.Final Answer:
useState-> Option BQuick Check:
Simple local state =useState[OK]
- Choosing Redux for simple local state
- Confusing Context API with local state
- Thinking MobX is simpler than useState
useState in React Native?Solution
Step 1: Recall useState syntax
The correct syntax uses array destructuring: const [value, setter] = useState(initialValue);Step 2: Check each option
const [count, setCount] = useState(0); matches the correct syntax exactly.Final Answer:
const [count, setCount] = useState(0); -> Option DQuick Check:
useState syntax = const [value, setter] = useState(initial) [OK]
- Using let or var instead of const
- Not using array destructuring
- Trying to declare state with 'state' keyword
const [count, setCount] = useState(0); setCount(count + 1); setCount(count + 1); console.log(count);
Solution
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.Step 2: Check console.log output
console.log(count) runs before state updates complete, so it logs the initial value 0.Final Answer:
0 -> Option AQuick Check:
State updates async, console logs old value [OK]
- Expecting count to be 2 immediately
- Thinking setCount updates synchronously
- Ignoring that console.log runs before update
const [items, setItems] = useState([]);
function addItem(newItem) {
items.push(newItem);
setItems(items);
}Solution
Step 1: Check how state is updated
The code mutates the existing array with push, which is not allowed because state must be immutable.Step 2: Understand correct update method
Instead, create a new array copy with the new item and pass it to setItems.Final Answer:
Directly mutating state array before setItems -> Option AQuick Check:
State must be immutable; don't mutate arrays [OK]
- Mutating arrays or objects directly
- Thinking useState can't hold arrays
- Calling setItems with no arguments
Solution
Step 1: Identify need for shared state
Login status must be accessible across multiple screens, so state must be shared globally.Step 2: Choose appropriate state management
React Context API allows sharing state across components without prop drilling, ideal for global data like login status.Final Answer:
Use React Context API to share login state globally -> Option CQuick Check:
Shared state across screens = Context API [OK]
- Using separate useState in each screen causing inconsistent state
- Trying to store state in local variables
- Confusing styles with state
Ready to prove it?
Pass the test and this pattern moves unknown
