提问人:TCoder2231 提问时间:12/7/2021 更新时间:12/7/2021 访问量:4082
如何将“参数”传递给 react 组件
How to pass "parameter" to react component
问:
我有一个简单的问题,我正在尝试在现有代码库中重构我的代码,该代码库使用渲染函数,但是我想用 react 函数组件替换它。
但是,当我传入一个名为“searchResults”的参数(一个列表)时,我收到错误。
下面是前面未重构的代码
searchResults.sort((a, b) => new Date(b[0].created) - new Date(a[0].created));
const Rows = [];
searchResults.forEach((appResults, i) => {
Rows.push({
cells: [
appResults[0].applicationId,
<>{renderSuccessCount(appResults)}</>,
prettifyDate(appResults[0].created)
],
isOpen: false
});
这是我重构的代码
const newRows = [];
searchResults.forEach((appResults, i) => {
newRows.push({
cells: [
appResults[0].applicationId,
<SuccessCount>{appResults}={appResults}</SuccessCount>,
prettifyDate(appResults[0].created)
],
isOpen: false
});
这是函数 SuccessCount(在非重构代码中,renderSuccessCount 只是在重构版本中重命名为 SuccessCount
const SuccessCount = (appResults: AppResult[]) => {
const nSuccesses = appResults.filter((result: AppResult) => result.pulseStatus === SUCCESS).length;
return Something;
};
我的问题相对简单,如何将appResults传递到我的功能组件中,我当前重构的代码给了我这个错误
TS2740: Type '{ children: any[]; }' is missing the following properties from type 'AppResult[]': length, pop, push, concat, and 26 more.
这是在林特,我该如何摆脱它?
答:
1赞
vatz88
12/7/2021
#1
现在它不是一个常规函数,而是一个 react 函数组件,它不会收到常规参数。您必须通过道具访问它们SuccessCount
const SuccessCount = ({appResults}: {appResults: AppResult[]}) => {
同上
const SuccessCount = (props) => {
const {appResults} = props; // or const appResults = props.appResults;
}
用作功能组件
<SuccessCount appResults={appResults} />
评论
<SuccessCount appResults={appResults}></SuccessCount>
SuccessCount