mirror of
https://github.com/Mastermindzh/react-starter-kit.git
synced 2025-04-11 09:35:08 +02:00
70 lines
1.8 KiB
TypeScript
70 lines
1.8 KiB
TypeScript
import { useState } from "react";
|
|
|
|
import { useAppDispatch, useAppSelector } from "../../app/hooks";
|
|
import styles from "./Counter.module.css";
|
|
import { incrementAsync } from "./state/actions/incrementAsync";
|
|
import {
|
|
decrement,
|
|
increment,
|
|
incrementByAmount,
|
|
incrementIfOdd,
|
|
selectCountAndStatus,
|
|
} from "./state/counterSlice";
|
|
|
|
export function CounterContainer() {
|
|
const { value, status } = useAppSelector(selectCountAndStatus);
|
|
const dispatch = useAppDispatch();
|
|
const [incrementAmount, setIncrementAmount] = useState("2");
|
|
|
|
const incrementValue = Number(incrementAmount) || 0;
|
|
|
|
return (
|
|
<div>
|
|
Status: {status}
|
|
<div className={styles.row}>
|
|
<button
|
|
className={styles.button}
|
|
aria-label="Decrement value"
|
|
onClick={() => dispatch(decrement())}
|
|
>
|
|
-
|
|
</button>
|
|
<span className={styles.value}>{value}</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>
|
|
);
|
|
}
|