Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 如何使用TypeScript+;从道具访问分派例程;雷杜?_Reactjs_Typescript_Redux_React Redux - Fatal编程技术网

Reactjs 如何使用TypeScript+;从道具访问分派例程;雷杜?

Reactjs 如何使用TypeScript+;从道具访问分派例程;雷杜?,reactjs,typescript,redux,react-redux,Reactjs,Typescript,Redux,React Redux,看看我在TypeScript中创建的以下切片(storeSlice.ts): 当我将道具记录到组件中时,我会得到映射到mapStateToProps的状态,并且我还会得到映射到mapDispatchToProps的GetCallers操作 但是,我实际上无法访问getcallers操作,因为它未在StoreState中定义 我不希望必须在我创建的每个默认状态类型中定义操作 我可以做些什么来使用代码中的分派操作,同时保持TypeScript的快乐吗 抱歉,如果这个问题没有太多意义,我对这个技术堆栈

看看我在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
连接高阶组件已经有一段时间了,它曾经是将数据从状态获取到组件中的唯一方法。它仍然有效,但现在建议您改用较新的hook
useSelector
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)
    }
}