reactjs - 如何在使用 map() 函数时将 this.props 从父组件传递给子组件而不会未定义?
问题描述
我有两个组成部分:<Content />
作为父母和<Curriculum />
作为孩子。
对于<Content />
组件,在从 Redux 存储中获取状态后,我将状态映射到 props 并将这些 props 传递给 map() 函数。
// import...
class Content extends Component {
render() {
return (
<div>
{this.props.englishEntrances.map((english, i) => {
//Work
console.log(`CONTENT ${i}`);
console.log(this.props.curriculums);
console.log(this.props.curriculums[i]);
console.log(english);
return (
<Curriculum
key={i}
level={i + 1}
titleColor={colorLevels[i].title}
contentColor={colorLevels[i].content}
//Bug here
curriculum={this.props.curriculums[i]}
englishEntrance={english}
/>
);
})}
</div>
);
}
}
//const mapStateToProps...
export default connect(mapStateToProps, null)(Content);
在map()
函数内部,有两个对象数组:curriculums
和englishEntrances
。
我尝试打印this.props.curriculums[i]
和english
,控制台会正常出现这些值。
问题是:当我尝试在return
语句中传递两个值时,在<Curriculum />
组件中,只有有值english
,但是.this.props.curriculum
undefined
任何人都知道如何在this.props
没有得到的情况下传递价值undefined
?
解决方案
我忘记render()
了 React 组件生命周期中的函数可以在初始化构造函数后立即渲染。在<Curriculum />
组件中, 的值this.props.curriculum
将undefined
在这个阶段,
因此,我必须在从商店获取状态之前和之后处理该组件中的事件。
推荐阅读
- java - Web 应用程序中的 Java Spring 错误处理性能
- c - 将复合文字传递给函数是否有效?
- php - 在尝试获取文件扩展名时出现字符串错误时调用成员函数 getClientOriginalExtension()?
- java - Webflux:将文件和 DTO 传递到单个请求中
- mysql - 如何进一步优化此查询?
- memory-management - 分配后是否共享 TLAB 分配的对象?
- python - Python int 太大,无法转换为 C int,二进制转换为 ASCII
- html - 如何创建水平轮播(每张图片都是指向网站的链接)
- jquery - 在 React-pivottable 中渲染 jquery 数据表
- angular - C 类模块不是 Angular 模块