javascript - 如何将道具传递给使用地图渲染的 ReactNode 对象?
问题描述
function fun(){
const [contentArray,setContentArray] = useState([]);
setContentArray([...contentArray, <A />]);
setContentArray([...contentArray, <A />]);
setContentArray([...contentArray, <A />]);
return(
<div>
{
contentArray.map( (component:React.ReactNode,i:number) => {
return(
component
)}
}
</div>
})
);
}
只要我不想将任何道具传递给“contentArray”数组的这些数组元素,上面的代码就可以正常工作。但我想将索引作为道具传递给这些数组元素代码沙箱:https ://codesandbox.io/s/quirky -cray-u4jr1?from-embed
解决方案
在设置状态时,它应该如下完成
setState(prevState => [...prevState, A]
并且在渲染它时它应该被渲染如下
{state.map((Comp, i) => {
return <Comp key={i} index={i} />;
})}
注意:不需要将 type 指定为 React.ReactNode,并且需要注意不要在 render 中设置 state,react 不允许这样做,以避免无限循环。
感谢您展示如何做到这一点@bpas247
https://codesandbox.io/s/broken-flower-z87mt
推荐阅读
- c++ - OpenSSL/c/c++-EC secp256k1 密钥生成
- php - 可以在同一视图中显示和编辑数据库记录吗?
- reactjs - React redux-form - 测试时出错 - “TypeError:handleSubmit 不是函数”
- android - 是否可以使用另一个应用程序(android)作为任何其他应用程序的数据源
- python - 导入 txt 文件并将行反转作为输出
- c++ - 如何使用 cout
- python - 如何测试 Python 私有方法(是的,我确实有理由测试它们)?
- java - JPA - 选择一个带有计算的字段
- ruby-on-rails - 在 React 前端使用 Rails ActionCable 对象。
- outlook - Outlook 加载项:获取附件并计算新电子邮件的总大小