What if your app's data could magically stay in sync everywhere without extra effort?
Why Lifting state up in React Native? - Purpose & Use Cases
Imagine you have two buttons in different parts of your app, and both need to show the same number that changes when either button is pressed.
You try to keep each button's number separately, but then they get out of sync and confuse users.
Managing the same data in multiple places means you have to update each one manually.
This is slow, causes bugs, and makes your app behave unpredictably.
Lifting state up means moving the shared data to a common parent component.
Now both buttons read and update the same source of truth, keeping everything in sync automatically.
const [count1, setCount1] = useState(0); const [count2, setCount2] = useState(0);
const [count, setCount] = useState(0);This lets your app stay consistent and easy to manage, even as it grows bigger and more interactive.
Think of a shopping app where the cart icon and the checkout page both show the number of items.
Lifting state up keeps these numbers perfectly matched without extra work.
Sharing state in one place avoids confusion and bugs.
Lifting state up keeps your app data consistent.
It makes your app easier to build and maintain.
Practice
lifting state up in React Native?Solution
Step 1: Understand the concept of shared state
Lifting state up means moving state to a common parent so multiple children can use it.Step 2: Identify the purpose of lifting state up
This helps keep data consistent and allows children to communicate through the parent.Final Answer:
To move shared state to a common parent component so children can access it -> Option BQuick Check:
Lifting state up = shared parent state [OK]
- Thinking each child should have its own separate state
- Believing lifting state up removes the need for props
- Confusing lifting state up with component styling
Solution
Step 1: Identify what to pass as prop
The parent passes a function to update state, not the state value or setState method directly.Step 2: Choose the correct syntax
PassingupdateStateFunctionas a prop is correct to allow child to call it.Final Answer:
<Child updateState={updateStateFunction} /> -> Option CQuick Check:
Pass update function as prop = <Child updateState={updateStateFunction} /> [OK]
- Passing the entire state object instead of a function
- Passing setState method directly without binding
- Passing state value instead of update function
Child is pressed?
function Parent() {
const [count, setCount] = React.useState(0);
return (
<>
<Child count={count} increment={() => setCount(count + 1)} />
<Text>Count: {count}</Text>
</>
);
}
function Child({ count, increment }) {
return <Button title={`Add`} onPress={increment} />;
}Solution
Step 1: Understand state and props flow
The Parent holds the count state and passes it plus an increment function to Child.Step 2: Analyze what happens on button press
Pressing the button calls increment, which updates count by adding 1.Final Answer:
The count displayed will increase by 1 each time the button is pressed -> Option DQuick Check:
State update via lifted function increments count [OK]
- Thinking count won't update because it's passed as prop
- Assuming setCount is not called correctly
- Confusing local and lifted state
function Parent() {
const [text, setText] = React.useState('');
return <Child text={text} setText={setText()} />;
}
function Child({ text, setText }) {
return <TextInput value={text} onChangeText={setText} />;
}Solution
Step 1: Check how setText is passed as prop
In Parent,setText={setText()}calls setText immediately instead of passing the function.Step 2: Correct way to pass setText
It should besetText={setText}to pass the function reference.Final Answer:
setText is called immediately instead of passing the function -> Option AQuick Check:
Pass function reference, not call it [OK]
- Calling setState function instead of passing it
- Confusing state value with update function
- Ignoring React hooks rules
TemperatureInputCelsius and TemperatureInputFahrenheit, that need to share temperature data. How should you use lifting state up to keep both inputs in sync?Solution
Step 1: Identify the need for shared state
Both siblings need to reflect the same temperature, so state must be shared.Step 2: Apply lifting state up
Move temperature state to their common parent and pass it plus update functions down as props.Step 3: Avoid incorrect approaches
Separate states cause inconsistency; global variables break React's data flow.Final Answer:
Move the temperature state to their common parent and pass value and update functions as props -> Option AQuick Check:
Lift shared state to parent for syncing siblings [OK]
- Keeping separate states causing out-of-sync inputs
- Trying to share state via global variables
- Passing state only to one sibling
Ready to prove it?
Pass the test and this pattern moves unknown
