reactjs - 在某些组件中使用 HOC,而不是 Redux 中的每个组件
问题描述
首先,我已经将componentA,componentB,componentC连接到redux。其次,从 BackHandlerHoc 中导出 componentA
import React from 'react'
import { BackHandler,Platform} from "react-native";
export default function BackHandlerHoc(WrappedComponent) {
return class extends React.Component {
constructor(props) {
super(props)
}
componentDidMount() {
if (Platform.OS === "android") {
BackHandler.addEventListener('hardwareBackPress', this.goBack.bind(this));
}
}
componentWillUnmount() {
if (Platform.OS === "android") {
BackHandler.removeEventListener("hardwareBackPress", this.goBack.bind(this));
}
}
goBack = () => {
console.log("goBack")
// some code
};
render() {
return (
<WrappedComponent {...this.props} />
)
}
}
}
在组件 A 中
export default connect(mapStateToProps, null)(BackHandlerHoc(componentA))
在组件 B 中
export default connect(mapStateToProps, null)(componentB)
在组件C中
export default connect(mapStateToProps, null)(componentC)
问题是每个连接到 redux(componentB, componentC, componentA) 的组件都获取了 BackHandler.addEventListener。我只想让 componentA 获得 BackHandler.addEventListener。必须做什么?!
解决方案
推荐阅读
- javascript - addEventListener 指向作为对象属性的函数,加载时不触发函数
- sonarqube - 来自 create-react-app 测试的 SonarCloud 覆盖率报告
- python - 沿同一索引合并列
- javascript - 播放后如何在leafletJS中隐藏视频覆盖?
- error-handling - 如何使错误链错误与失败错误兼容?
- python-3.x - 子数组中总和最大的所有元素,其中元素取自给定数组,使得没有两个元素相邻?
- javascript - 尝试将 jQuery 鼠标悬停转换为页面加载
- python - 试图通过嵌套的字典来理解搜索
- swift - 如何在 swift 中轻松复制不可变结构,仅更改某些字段 [如 kotlin 数据类复制方法]?
- python - 404 错误 - Twilio Python 快速入门