Reactjs 如何使用TypeScript+;从道具访问分派例程;雷杜?
看看我在TypeScript中创建的以下切片(Reactjs 如何使用TypeScript+;从道具访问分派例程;雷杜?,reactjs,typescript,redux,react-redux,Reactjs,Typescript,Redux,React Redux,看看我在TypeScript中创建的以下切片(storeSlice.ts): 当我将道具记录到组件中时,我会得到映射到mapStateToProps的状态,并且我还会得到映射到mapDispatchToProps的GetCallers操作 但是,我实际上无法访问getcallers操作,因为它未在StoreState中定义 我不希望必须在我创建的每个默认状态类型中定义操作 我可以做些什么来使用代码中的分派操作,同时保持TypeScript的快乐吗 抱歉,如果这个问题没有太多意义,我对这个技术堆栈
storeSlice.ts
):
当我将道具记录到组件中时,我会得到映射到mapStateToProps
的状态,并且我还会得到映射到mapDispatchToProps
的GetCallers
操作
但是,我实际上无法访问getcallers
操作,因为它未在StoreState
中定义
我不希望必须在我创建的每个默认状态类型中定义操作
我可以做些什么来使用代码中的分派操作,同时保持TypeScript的快乐吗
抱歉,如果这个问题没有太多意义,我对这个技术堆栈是相当陌生的。在您的
mapDispatchToProps
中,您无意调用dispatch
,而不是从组件返回调用dispatch
的函数。将其更改为:
const mapDispatchToProps = (dispatch: Dispatch<any>) => {
return {
getSummoners: () => dispatch(getSummoners)
}
}
const-mapDispatchToProps=(调度:调度)=>{
返回{
getcallers:()=>调度(getcallers)
}
}
这会解决你的问题。如果没有,请更新您的帖子,并说明您所收到的确切错误
作为旁注,使用MapStateTrops
和mapDispatchToProps
连接高阶组件已经有一段时间了,它曾经是将数据从状态获取到组件中的唯一方法。它仍然有效,但现在建议您改用较新的hookuseSelector
和useDispatch
import React, { Dispatch } from 'react';
import { connect } from 'react-redux';
import { getSummoners, StoreState } from './storeSlice';
interface PropState {
store: StoreState
}
const Store = (props: StoreState) => {
console.log("store props", props); //This contains my "getSummoners" action, but I can't access it because it's not defined in "StoreState"
return (
<h1>Hello!</h1>
);
}
const mapStateToProps = (state: PropState) => {
console.log("Store state", state);
return { summoners: state.store.summoners };
};
const mapDispatchToProps = (dispatch: Dispatch<any>) => {
return {
getSummoners: dispatch(getSummoners)
}
}
export default connect(mapStateToProps, mapDispatchToProps)(Store);
const mapDispatchToProps = (dispatch: Dispatch<any>) => {
return {
getSummoners: () => dispatch(getSummoners)
}
}