Skip to content

Commit 96fef23

Browse files
authored
Merge pull request #1 from coolguyzone/redux
Get basic redux store functionality running
2 parents 268194e + 05cc94a commit 96fef23

File tree

6 files changed

+142
-6
lines changed

6 files changed

+142
-6
lines changed

App.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ import BeerAndWineBoozeTab from "./Screens/IngredientsTabs/BeerAndWineTab";
1212
import MixersTab from "./Screens/IngredientsTabs/MixersTab";
1313
import ProduceTab from "./Screens/IngredientsTabs/ProduceTab";
1414
import { Ionicons } from "@expo/vector-icons";
15+
import store from "./src/app/store";
16+
import { Provider } from 'react-redux';
1517

1618

1719
const Drawer = createDrawerNavigator();
@@ -60,7 +62,7 @@ function IngredientsTabNavigator() {
6062

6163
export default function App() {
6264
return (
63-
<>
65+
<Provider store={store}>
6466
<NavigationContainer>
6567
<Drawer.Navigator initialRouteName="Home">
6668
<Drawer.Screen name="Home" component={HomeScreen} />
@@ -71,7 +73,7 @@ export default function App() {
7173
<Drawer.Screen name="Recipes" component={RecipesScreen} />
7274
</Drawer.Navigator>
7375
</NavigationContainer>
74-
</>
76+
</Provider>
7577
);
7678
}
7779

Screens/IngredientsTabs/LightBoozeTab.js

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,39 @@
11
import { useState } from "react";
2-
import { StyleSheet, Text, View } from "react-native";
2+
import { Button, StyleSheet, Text, View } from "react-native";
33
import CheckBox from "react-native-check-box";
44
import IngredientCheckBox from "../../components/IngredientCheckBox";
55
import { Constants } from "../../util/constants";
6+
import { useSelector, useDispatch } from "react-redux";
7+
import {
8+
addIngredient,
9+
ingredientsArray,
10+
} from "../../util/slices/inventorySlice";
611

712
function LightBoozeTab() {
13+
const ingredients = useSelector((state) => state.inventory);
14+
const dispatch = useDispatch();
15+
// dispatch(inventory.addIngredient('bourbon'))
16+
console.log('addIngredient', addIngredient),
17+
console.log('ingredients', ingredients)
18+
19+
20+
821
return (
922
<>
1023
<Text style={{ marginTop: 20 }}>Light Booze</Text>
1124
<View style={styles.IngredientContainer}>
1225
{Constants.clearDrinks.map((drink) => {
13-
return <IngredientCheckBox key={drink}>{drink}</IngredientCheckBox>
26+
return <IngredientCheckBox key={drink}>{drink}</IngredientCheckBox>;
1427
})}
28+
<Button
29+
title="test"
30+
onPress={() => {
31+
console.log("clicked");
32+
console.log('ingredients2', ingredients)
33+
return dispatch(addIngredient("bourbon"));
34+
}}
35+
></Button>
36+
<Text>WHat's up!!! {useSelector(ingredientsArray)}</Text>
1537
</View>
1638
</>
1739
);

package-lock.json

Lines changed: 84 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,15 @@
1212
"@react-native-community/checkbox": "^0.5.17",
1313
"@react-navigation/bottom-tabs": "^6.5.11",
1414
"@react-navigation/drawer": "^6.6.6",
15+
"@reduxjs/toolkit": "^2.1.0",
1516
"expo": "~49.0.15",
1617
"expo-status-bar": "~1.6.0",
1718
"react": "18.2.0",
1819
"react-native": "0.72.6",
1920
"react-native-check-box": "^2.1.7",
2021
"react-native-gesture-handler": "~2.12.0",
21-
"react-native-reanimated": "~3.3.0"
22+
"react-native-reanimated": "~3.3.0",
23+
"react-redux": "^9.1.0"
2224
},
2325
"devDependencies": {
2426
"@babel/core": "^7.20.0"

src/app/store.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import { configureStore } from '@reduxjs/toolkit'
2+
import inventoryReducer from '../../util/slices/inventorySlice'
3+
4+
export default configureStore({
5+
reducer: {
6+
inventory: inventoryReducer,
7+
},
8+
})

util/slices/inventorySlice.js

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import { createSlice } from "@reduxjs/toolkit";
2+
3+
export const inventorySlice = createSlice({
4+
name: "inventory",
5+
initialState: {
6+
ingredientsArray: ['water'],
7+
},
8+
reducers: {
9+
addIngredient: (state, action) => {
10+
console.log('addIngredient')
11+
state.ingredientsArray.push(action.payload);
12+
},
13+
},
14+
});
15+
16+
export const { addIngredient } = inventorySlice.actions;
17+
export const ingredientsArray = (state) => state.inventory.ingredientsArray;
18+
19+
export default inventorySlice.reducer;

0 commit comments

Comments
 (0)