reactjs - 将功能组件转换为类组件
问题描述
我有一个功能组件,但由于我需要使用 now 状态和更复杂的逻辑,我想将它转换为类组件。但我不知道如何让它工作:
我的功能组件:
import React from 'react';
const FileList = (props) => {
const items = props.items.map((item) => {
return <p key={item.reqId} > { item.name }</ p>
});
return <div>{items}</div>
}
我试图这样做:
export default class FileL extends React.Component {
constructor(props) {
super(props)
}
render() {
const { items } = this.props;
items = props.items.map((item) => {
return <p key={item.reqId} > {item.name}</ p>
});
return (
<div>{items}</div>
);
}
}
但这不起作用。它说“项目”是只读的。我想保持相同的功能。
有任何想法吗?
解决方案
在您的渲染功能中
render() {
const { items } = this.props;
items = props.items.map((item) => {
return <p key={item.reqId} > {item.name}</ p>
});
return (
<div>{items}</div>
);
}
items
所以const
你不能覆盖它。这与 React 无关。而且你不应该重新分配一个 props 元素,即使它是用let
. 您可能会使用以下内容:
render() {
const { items } = this.props;
return (
<div>
{
items.map((item) => <p key={item.reqId} > {item.name}</ p>)
}
</div>
);
}
推荐阅读
- search - Solr:如果组中的一个与查询匹配,如何检索该组的所有文档?
- javascript - Three.js 旋转立方体以在前视图中显示选定的一侧?
- animation - 为什么我收到这个错误,当角色完全加载时?
- vue.js - 当链接在我的过滤数组中时,如何在 vuetify 中加载图像?
- material-ui - 如何将 Material UI 集成到 Svelte 项目中
- docker - confluentinc/cp-zookeeper Docker Image 和 ZooKeeper 的四字单词白名单
- javascript - 如何通过 XMLhttprequest 和多部分/表单正文内容发送视频?视频未发送?
- amazon-s3 - 来自事件 ObjectCreated S3 存储桶 (Node.js) 的 AWS Lambda POST 请求
- html - 如何在materializecss的输入中制作正确的溢出文本?
- namespaces - 'RxODE' 的包或命名空间加载失败。'RxODE' 的 attachNamespace() 中的 onAttach 失败,