diff options
Diffstat (limited to '')
-rw-r--r-- | src/features/counter/Counter.jsx | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/src/features/counter/Counter.jsx b/src/features/counter/Counter.jsx new file mode 100644 index 0000000..37d866d --- /dev/null +++ b/src/features/counter/Counter.jsx @@ -0,0 +1,67 @@ +import React, { useState } from "react"; +import { useSelector, useDispatch } from "react-redux"; +import { + decrement, + increment, + incrementByAmount, + incrementAsync, + incrementIfOdd, + selectCount, +} from "./counterSlice"; +import styles from "./Counter.module.css"; + +export function Counter() { + const count = useSelector(selectCount); + const dispatch = useDispatch(); + const [incrementAmount, setIncrementAmount] = useState("2"); + + const incrementValue = Number(incrementAmount) || 0; + + return ( + <div> + <div className={styles.row}> + <button + className={styles.button} + aria-label="Decrement value" + onClick={() => dispatch(decrement())} + > + - + </button> + <span className={styles.value}>{count}</span> + <button + className={styles.button} + aria-label="Increment value" + onClick={() => dispatch(increment())} + > + + + </button> + </div> + <div className={styles.row}> + <input + className={styles.textbox} + aria-label="Set increment amount" + value={incrementAmount} + onChange={(e) => setIncrementAmount(e.target.value)} + /> + <button + className={styles.button} + onClick={() => dispatch(incrementByAmount(incrementValue))} + > + Add Amount + </button> + <button + className={styles.asyncButton} + onClick={() => dispatch(incrementAsync(incrementValue))} + > + Add Async + </button> + <button + className={styles.button} + onClick={() => dispatch(incrementIfOdd(incrementValue))} + > + Add If Odd + </button> + </div> + </div> + ); +} |