web-dev-qa-db-ja.com

react-redux useSelectorが「Uncaught TypeError:Object(...)is not a function」と表示しています

私はReactフックでかなり新しいです、connectmapStateToPropsなどをuseSelectoruseDispatch。これは私が持っているものです:

_import React from 'react';
import { useSelector } from 'react-redux';

function MyComponent(props) {
   const data = useSelector(state => state.app.loadingData);

   return (
      <div>
        {data}
      </div>
   );
}
_

https://react-redux.js.org/api/hooks によると、これはよく書かれています。これは私のRedux DevToolsコンソールです:

enter image description here

したがって、appはredux状態ツリーに存在し、loadingDataも存在します。それにも関わらず、私のブラウザコンソールはconst data = useSelector(state => state.app.loadingData);を指しており、このエラーがあることを知らせています:

Uncaught TypeError:Object(...)は関数ではありません

それで、私は何が間違っているのですか、ここで何が欠けていますか?

2
assembler

解決:

多分最善の方法、または最もきれいな方法ではないかもしれませんが、私のための実用的な解決策:

const data = useSelector(state => state.getIn(['app', 'loadingData']);

これがお役に立てば幸いです。このソリューションを改善できるとしたら、reduxチームがここに光を提供するかもしれません。

1
assembler