App.js
import React from "react";
import { useSelector, useDispatch } from "react-redux";
export const App = () => {
const x = useSelector(state => state.reduserDD.counter);
const dispatch = useDispatch();
console.log(x);
return (
<div>
<div onClick={() => dispatch({ type: "increment" })}>+</div>
<div onClick={() => dispatch({ type: "decrement" })}>-</div>
<div>{x}</div>
</div>
);
};
index.js
import React from "react";
import ReactDOM from "react-dom";
import { Provider } from "react-redux";
import { createStore } from "redux";
import { App } from "./App";
import { reduserDD } from "./reduser";
const store = createStore(reduserDD);
ReactDOM.render(
<Provider store={store}>
<App />
</Provider>,
document.getElementById("root")
);
Reducer
const initialState = {
counter: 0
};
export const reduserDD = (state = initialState, { type }) => {
switch (type) {
case "increment":
return { counter: state.counter + 1 };
case "decrement":
return { counter: state.counter - 1 };
default:
return state;
}
};
I use Redux Hook and get this error.
Error: An error occured while selecting the store state: Cannot read >property 'counter' of undefined.
What is the problem and how can I fix it?
You pass directly your reduserDD
to createStore
. So state.reduserDD
is not existed. state
is your reduserDD
.
You only need to get state.counter
instead of state.reduserDD.counter
const x = useSelector(state => state.counter);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With