Я знаю, что есть ответы на этот вопрос повсюду, но я просмотрел их и, насколько я могу судить, я подчиняюсь правилам, но все равно получаю ошибку.
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"
},