我使用 Redux 已經有一段時間了,但由于某種原因,我的代碼無法正常作業:
import { store } from "../pages/_app";
....
const dispatch = useDispatch();
const [state_sample, setSs]: any = useState(0); // - just use for triggering useEffect
const audioCurrentTimeState: any = useSelector((state: RootState) => {
state.AudioCurrentTimeState;
});
useEffect(() => { // - I am trying to trigger this useEffect but it doesn't work
console.log(audioCurrentTimeState); // - doesn't work (?)
console.log(store.getState().AudioCurrentTimeState); // - works
}, [audioCurrentTimeState, state_sample]);
return (
<div className={style.waveform_component_root}>
<p
onClick={() => {
console.log("clicked!");
setSs(Math.random()); // - just use for triggering useEffect
dispatch({
type: "AudioCurrentTimeReducer/SET",
value: Math.random(),
});
}}
>
click me
</p>
</div>)
這是 的減速器audioCurrentTimeState:
export const AudioCurrentTimeReducer = (value = 0, action: any) => {
switch (action.type) {
case "AudioCurrentTimeReducer/SET":
return action.value;
default:
return value;
}
};
這里是rootState:
import { combineReducers } from "redux";
import {
AudioCurrentTimeReducer,
} from "./reducers/reducers";
const rootReducers = combineReducers({
AudioCurrentTimeState: AudioCurrentTimeReducer,
});
export type RootState = ReturnType<typeof rootReducers>;
export default rootReducers;
我通過 redux 設定如下:
import type { AppProps } from "next/app";
import { createStore } from "redux";
import { Provider } from "react-redux";
import rootReducers from "../scripts/redux/rootReducer";
export const store = createStore(rootReducers);
export default function App({ Component, pageProps }: AppProps) {
return (
<Provider store={store}>
<Component {...pageProps} />
</Provider>
);
}
我以前從未遇到過這個問題,如果有任何更改,我似乎找不到任何參考。但正如你從上面看到的,我只能得到if 我用not byAudioCurrentTimeState呼叫它的值,我需要為此觸發 useEffect 。store.getState().AudioCurrentTimeStateuseSelector
uj5u.com熱心網友回復:
你忘了回傳值useSelector
正確的:
const audioCurrentTimeState: any = useSelector((state: RootState) => {
RETURN state.AudioCurrentTimeState;
});
// OR short
const audioCurrentTimeState: any = useSelector((state: RootState) => state.AudioCurrentTimeState);
曾是:
const audioCurrentTimeState: any = useSelector((state: RootState) => {
state.AudioCurrentTimeState;
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/532331.html
