创建redux/hooks.ts文件
import {useSelector as useReduxSelector, TypedUseSelectorHook} from 'react-redux';
import { RootState } from './store';
export const useSelector: TypedUseSelectorHook<RootState> = useReduxSelector;
store.js文件
const store = createStore(languageReducer);
export type RootState = ReturnType<typeof store.getState>
在header.tsx文件中使用hook
import React from "react";
import { useSelector } from "../../redux/hooks"; //useSelector从store中连接state数据
import { useDispatch } from "react-redux";
import { changeLanguageActionCreator, addLanguageActionCreator} from '../../redux/language/languageActions';
import {useTranslation} from 'react-i18next';
export const Header : React.FC = ()=>{
const language = useSelector((state) => state.language);
const languageList = useSelector((state) => state.languageList);
const { t} = useTranslation();
const dispatch = useDispatch();
const menuClickHander = (e)=>{
if(e.key === 'new'){
dispatch(addLanguageActionCreator('新语言', 'new_lang'));
}else{
dispatch(changeLanguageActionCreator(e.key));
}
}
return <Menu onClick={menuClickHander}>
{languageList.map(l => <Menu.Item key={l.code}>{l.name}</Menu.Item>)}
<Menu.Item key={'new'}>{t('header.add_new_language')}</Menu.Item>
</Menu>
}
这篇博客介绍了如何在React应用中创建并使用`redux/hooks.ts`文件来实现状态管理。通过`useSelector`和`useDispatch` hooks,从Redux store中获取和更新状态,如语言设置。在`header.tsx`组件中,展示了一个使用这些hooks的例子,包括从store中获取语言列表,使用`useTranslation`进行多语言处理,并通过菜单点击事件触发语言切换和添加新语言的action。这展示了React Redux Hooks在实际项目中的应用。
278

被折叠的 条评论
为什么被折叠?



