I got 3 pages
homepage
, productList
and productDetails
When going from homepage
to productList
I pass a route param,
navigation.navigate('productList', { showCategory: 'productListA'} )
InitialProcess when component mounted
Inside the productList page when the component is mounted. I am declaring use state like this.
const {showCateory} = route.params;
const [activeTab, setActiveTab] = useState(showCateory);
and calling api using that activeTab
useEffect(() => {
const unsubscribe = navigation.addListener('focus', () => {
async function fetchData() {
try {
await dispatch(
fetchProductList(
activeTab,
),
);
} catch (err) {
console.log(err);
}
}
fetchData();
});
return unsubscribe;
}, []);
User Interaction
But I also add the button in the productList so that user can change the current active tab
<TouchableOpacity onPress={() => changeTab()}></TouchableOpacity>
const changeTab = async () => {
await setActiveTab('productListB'),
await dispatch(fetchProductList(activeTab)
}
Take note that right now active tab
and data coming from api is different
from when the component is start mounted.
Navigation Change again
When use goes from productList
to productDetails
. All thing is fine.
But inside the product details I am going back to productList with this.
navigation.goBack()
.
When I am back in productList page The activeTab is change back to productListA
and the data is change back to when component is mounted
Can I pass or change the route params when calling navigation.goBack()
?