Muh*_*ooq 10 typescript reactjs redux react-redux
我正在尝试配置我的新 react-redux 应用程序以使用 React-Redux 的新功能。在官方文件说:
React Redux 现在提供了一组钩子 API 作为现有 connect() 高阶组件的替代方案。
我一直在寻找一些与 Hooks API 相关的帮助文章和一些真实的例子,但所有的 react-redux 应用程序都在使用连接功能。官方文档还显示了非常基本的示例。
我想使用 useSelector(由 Hooks API 提供)更改我的应用程序中的连接功能。
这是我的应用程序中的示例代码片段。
//MessagesListContainer
export default connect(
// mapStateToProps
(state:State) => ({
activeUser: getActiveUser(state),
messages: getMessagesList(state),
})
)(MessagesList)
//Selectors
export const getActiveUser = (state: State) => state.activeUser;
export const getMessagesList = (state : State) => (
Object.keys(state.messages).map((key : any)=> state.messages[key])
)
export interface IMessagesListProps {
activeUser?: User;
messages?: Message[];
}
/**
* Messages List
*/
export default class MessagesList extends PureComponent<IMessagesListProps> {
.
.
.
}
Run Code Online (Sandbox Code Playgroud)
Mik*_*ara 11
钩子与 Class 组件不兼容。要使用 Hooks,您需要将类组件转换为函数组件。例如,您的代码可以重构为
/**
* Messages List
*/
const getActiveUser = (state: State) => state.activeUser;
const getMessagesList = (state : State) => (Object.keys(state.messages).map((key : any)=> state.messages[key]));
const MessagesList: React.FC = () => {
const activeUser = useSelector(getActiveUser);
const messagesList = useSelector(getMessagesList);
....
}
export default MessagesList;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
272 次 |
最近记录: |