【问题标题】:Can't use Redux connect() correctly with TypeScript无法通过 TypeScript 正确使用 Redux connect()
【发布时间】:2021-06-05 11:04:40
【问题描述】:

我正在使用带有 Typescript 的 Redux,我无法在组件之间传递数据。

EmpList.tsx

function mapStateToProps(){//mapping here}
.... //body of a Component
export default connect(mapStateToProps)(EmpList)

工具.tsx

import EmpList from './EmpList'
....
private empListTemp: RefObject<EmpList> = createRef()

问题是我在 Tool.tsx 中遇到错误 'EmpList 引用了一个值,但在此处用作类型'。 现在,如果我从 export 中删除 connect(mapStateToProps),或者将 export{mapStateToProps, EmpList} 放在 EmpList.tsx 中,我不会再出现该错误,但显然 Redux 不会那就不行了。

【问题讨论】:

    标签: reactjs typescript redux react-redux


    【解决方案1】:

    您需要将forwardRef: boolean 添加到connect 的选项中以使ref 产生任何显着效果 - 然后您使用未连接组件的类型,因为您想“引用”“内部组件” ",而不是 connect 创建的函数组件包装器。 不过,您仍然会使用连接的组件本身。

    【讨论】:

    • 我想我不明白在哪里使用“typeof”.. 像这样?:private empListTemp: RefObject = createRef() sry,我对这一切都很陌生,而 Redux 刚刚获得了我对 React 的有限知识,而 Ts 变得更加有限
    • 没有typeof未连接的组件。因此,不是您目前导出为default eport 的内容(即您的存储连接组件-您要访问引用的原始组件实际上是“包装在此处的另一个组件中”)。执行export { EmpList as UnconnectedEmpList },将其导入并将其用作参考的泛型。
    • 天哪,你无法想象你帮了我多少。非常感谢!
    【解决方案2】:

    使用useSelectoruseDispatch 钩子

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-11
      • 1970-01-01
      • 2017-06-17
      • 2019-09-30
      • 2016-09-04
      • 2021-10-16
      相关资源
      最近更新 更多