javascript - 高阶组件看不到道具
问题描述
我正在使用 react-native 和 redux。错误来自 redux 存储中的组件。之后,我收到: 渲染没有返回任何内容。这通常意味着缺少 return 语句。或者,不渲染任何内容,返回 null。
这有什么问题?为什么 hoc 看不到道具?
我的组件:
import React, { Component } from 'react';
import withHandleError from './withHandleError';
class SendScreen extends Component {
render() {
const { error } = this.props;
return (
<div> Test </div>
)
}
};
const mapStateToProps = ({ppm}) => ({
error: ppm.error
})
export default withHandleError(connect(mapStateToProps)(SendScreen));
和 HoC:
import React, { Component } from 'react';
import { ErrorScreen } from '../../ErrorScreen';
import { View } from 'react-native';
export default Cmp => {
return class extends Component {
render() {
const {error, ...rest } = this.props;
console.log(error) //// undefined....
if (error) {
return <ErrorScreen />
}
return <Cmp { ...rest } />
}
}
}
解决方案
当您想要访问一个又一个提供的道具时,您称之为 HOC 的顺序很重要。重新订购您的 connect 和 withHandleError HOC 将起作用
import React, { Component } from 'react';
import withHandleError from './withHandleError';
class SendScreen extends Component {
render() {
const { error } = this.props;
return (
<div> Test </div>
)
}
};
const mapStateToProps = ({ppm}) => ({
error: ppm.error
})
export default connect(mapStateToProps)(withHandleError(SendScreen));
推荐阅读
- python - matplotlib barplot 不适用于对数刻度
- angular - 带有 Angular 5 的 Google Adwords
- hive - 在 Hive 中获取过去 7 天的记录
- arrays - Swift - 排序和分离字典数组
- python - 在 Django Rosetta 中看不到我的项目字符串
- hyperledger-fabric - Unable to join channel on Hyperleger Fabric
- aws-api-gateway - AWS API Gateway - 自定义域名收益
- ios - Arkit 1.5 中的 ARKit Remote 是否有任何改进?
- scala - 如何在 Gatling 脚本上捕获“HTTP 响应”?
- gulp - BrowserSync 不刷新 HTML 文件