我怎样才能记住我的rawTranscript
变量,这样它就不会触发useEffect
下面的随后触发昂贵的transcriptParser
函数?我一直在尝试很多不同的方法,但是我使用 redux-hook ( useAppSelector
) 从存储中捕获数据的事实意味着我不能使用空依赖 useEffect 进行初始挂载(钩子不能在里面的使用效果)。出于同样的原因,我似乎也不useAppSelector
能用 a来包装。useMemo
关于如何记忆rawTranscript
变量的任何想法,因此它不会重新触发useEffect
?
useMemo
在, useEffect
,中使用 redux-hook 时出错useCallback
:
不能在回调中调用 React Hook “useAppSelector”。React Hooks 必须在 React 函数组件或自定义 React Hook 函数中调用。
零件
const TranscriptCardController = (): JSX.Element => {
const dispatch = useAppDispatch();
// how to memoize rawTranscript?
const rawTranscript = useAppSelector(selectRawTranscript);
const parsedTranscript = useAppSelector(selectParsedTranscript);
useEffect(() => {
const parsedResult = transcriptParser(rawTranscript, undefined, 0.9);
dispatch(updateParsedTranscript(parsedResult));
}, [dispatch, rawTranscript]);
// ...
};
选择器
export const selectRawTranscript = createSelector(
(state: RootState) => state.transcript.rawTranscript,
(rawTranscript): RawTranscript => rawTranscript
);