Ошибка пользовательского хука: хуки могут быть вызваны только в теле компонента функции - PullRequest
0 голосов
/ 02 октября 2019

Я знаю, что есть ответы на этот вопрос повсюду, но я просмотрел их и, насколько я могу судить, я подчиняюсь правилам, но все равно получаю ошибку.

enter image description here

const App: React.FC = () => {
  const count = useSelector<number>("counter", state => {
    const counter = state.get("counter");
    if (counter) {
      return counter.pipe(scan(total => total + 1)) as BehaviorSubject<number>;
    }
  });
  const dispatch = useDispatcher();
  return (
    <div className="App">
      <header className="App-header">
        <img src={logo} className="App-logo" alt="logo" />
        <p>Counter : {count}</p>
        <button
          onClick={() => {
            dispatch.next({ type: Increment });
          }}
        >
          CLICK ME
        </button>
        <a
          className="App-link"
          href="https://reactjs.org"
          target="_blank"
          rel="noopener noreferrer"
        >
          Learn React
        </a>
      </header>
    </div>
  );
};

И функция useSelector

mport { Selector, selectFromStore } from "../rxflux";
import { useState, useContext } from "react";
import {FluxContext} from "./FluxContext";

export function useSelector<T>(from: string, selector: Selector<T>) {
  const context = useContext(FluxContext);
  const [selectedState, setSelectedState] = useState();
  if (context) {
    const { store, storeMap } = context;
    const selection$ = selectFromStore(store, storeMap, from, selector)
    if(!selection$) {
      throw "Nothing returned from selector";
    }
    selection$.subscribe(v => setSelectedState(v));
    return selectedState;
  }

  throw "Context not registerd. Did your forget to use a Provider?";
}

Packge.json

 "dependencies": {
    "@types/jest": "24.0.18",
    "@types/node": "12.7.9",
    "@types/react": "16.9.4",
    "@types/react-dom": "16.9.1",
    "react": "^16.10.1",
    "react-dom": "^16.10.1",
    "react-scripts": "3.1.2",
    "rxjs": "^6.5.3",
    "typescript": "3.6.3"
  },
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...