reactjs - 为什么嵌套组件不会渲染?
问题描述
我正在尝试将 Item 组件插入到主组件中,但它没有呈现。如果我将组件的内容直接插入 RenderItems - 它可以工作。怎么了?
const Item = (id, text) => {
<div>
<p>{id}</p>
<p>{text}</p>
</div>
};
class RenderItems extends React.Component {
constructor(props) {
super(props);
this.state = {
items_array: [{id: 1, text: "text1"}, {id: 2, text: "text2"}, {id: 3, text: "text3"}],
};
}
render() {
return (
<div>
{this.state.items_array.map(i => <Item id={i.id} text={i.text} /> )}
</div>
);
}
}
有用:
render() {
return (
<div>
{this.state.items_array.map(i => {
<div>
<p>{i.id}</p>
<p>{i.text}</p>
</div>
})}
</div>
)
}
}
解决方案
item 函数需要一个 return 并作为 props 导入,而不是直接创建函数
const Item = ({id, text}) => {
return (<div>
<p>{id}</p>
<p>{text}</p>
</div>)
};
或者
使用括号而不是像这样的花括号:-
const Item = (id, text) => (
<div>
<p>{id}</p>
<p>{text}</p>
</div> );
推荐阅读
- python - 使用 conda 安装 matplot 库的问题
- azure-devops - 如何指定来自特定工件的构建变量?
- javascript - 通过 JavaScript 对象数组循环音频延迟?
- python - 仅检查奇数时,素数函数的多处理运行速度较慢
- c++ - 如何在另一个类的静态成员函数中传递非静态成员函数的函数指针
- ajax - 复选框上更改 ajax 的数据表不起作用
- android-studio - 视图可见后滚动
- flutter - 使用 DefaultTabController 作为中间小部件滚动整个屏幕
- php - 在 PHP 中保存带有 xlsm 扩展名的 excel 文件
- java - Java JFrame 更新我的屏幕很慢,直到我按下一个键