Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Error: An error occured while selecting the store state: Cannot read property 'counter' of undefined

Tags:

react-redux

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?


1 Answers

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);
like image 157
Tien Duong Avatar answered Sep 23 '25 13:09

Tien Duong