reactjs - 有条件地将 props 传递给带有 typescript 组件的 React
问题描述
//This component is as same as index.js in react
import * as React from "react";
import ReactDOM from "react-dom";
import Card from "./components/Cards/Card";
import ItemCard from "./components/Cards/ItemCard/ItemCard";
const OrderTracking: React.FC = () => {
return (
<Card>
<ItemCard doesBadge={true} titleCard={'Square Card'} btnText={'Details'} progressPercentage={'30%'} progressStepName={'ha'} isReady={false} />
</Card>
)
};
export default OrderTracking;
if (document.getElementById("order-tracking")) {
ReactDOM.render(
<OrderTracking/>,
document.getElementById("order-tracking")
);
}
//my Card component
import * as React from 'react';
import CardClasses from './Card.module.css';
interface CartProps {
children: React.ReactNode
}
const Card: React.FC<CartProps> = props => {
return (
<div className={CardClasses.card__container}
>
{props.children}
</div>
);
};
export default Card;
//Item card component
import React from 'react';
import ItemCardClasses from './ItemCard.module.css';
import Button from '../../Buttons/Buttons';
import ProgressBar from "../../ProgressBars/ProgressBar/ProgressBar";
import TextItem from "./TextItem/TextItem";
interface ItemCardProps {
doesBadge: boolean;
// imgSource:string;
titleCard: string;
btnText: string;
progressPercentage: string;
progressStepName: string;
isReady: boolean;
}
const ItemCard: React.FC<ItemCardProps> = props => {
return (
<div className={ItemCardClasses.itemCard__container}>
{!props.isReady ? props.doesBadge ?
<div className={ItemCardClasses.badgeContainer}>
<span>بررسی تخصصی فایل</span>
</div> : null : null
}
<div className={ItemCardClasses.itemCard__imageContainer}>
<img src="/images/order-tracking/817720_check_395x512.png" alt={`${props.titleCard} image`}/>
</div>
<div className={ItemCardClasses.itemCard__detailsContainer}>
<h3 className={ItemCardClasses.itemCard__header}>کارت ویزیت مربعی (ابزار طراحی آنلاین)</h3>
{props.isReady ?
<>
<ProgressBar progressPercentage={'40%'} progressStepName={'چاپ'}/>
<div className={ItemCardClasses.itemCard__btnContainer}>
<Button isBoldText={false} btnTitle={'جزییات'} backgroundBtn={'primary'}/>
</div>
</> : <>
<TextItem/>
</>
}
</div>
</div>
);
};
export default ItemCard;
我正在使用对打字稿做出反应,但我遇到了问题。我希望当将 isReady 道具传递到 itemcard 组件时,itemcard 组件不会推动我输入 progressPercentage 和 progressStepName 和 btnText 道具。上面的代码片段显示了我的一些组件。订单跟踪组件与 react 中的 index.js 和 app.js 相同,card 组件是我的 itemscard 组件的容器。
解决方案
推荐阅读
- java - Cassandra require_client_auth:真正的问题
- reactjs - 使用反应路由器重定向后重新渲染组件
- slack - slack 斜杠命令工作但发送“失败并出现错误“操作超时””
- r - 查找此向量的数据类型背后的概念是什么
- c# - 序列化一个对象并将其反序列化为另一个对象 - WCF
- parsing - nltk 使用 RegexpParser 提取名词短语
- wpf - 在 .Net Core 3.1 的 2.0 版中找不到 MahApps ToggleSwitch 属性
- kubernetes - 找出负责特定服务的 pod
- google-cloud-platform - AutoML 自然语言 UI 不显示提取的文本以进行注释
- reactjs - 箭头函数,多个语句