在 React JS 中通过函数渲染组件的一部分
Rendering a part of component through function in react JS
我正在学习 reactJS,但遇到了一个问题。我制作了一个带有文本 ('Online') 的组件。我从 props 收到 Online as true/false
的状态。但是我想对组件的一部分(而不是整个组件)进行更改。就像这里我想更改 'online' 文本后使用的图标 CircleFill
的颜色。
我写了下面的代码,但不知道如何return那个小段?
import React,{useState} from 'react';
import { Row,Alert } from 'react-bootstrap';
import {BarChartFill, CircleFill } from 'react-bootstrap-icons';
const TitleHeadComponent = (props) => {
const [isNow, setisNow] = useState(props.isOnline);
function circleColor(isNow) {
if(isNow === true) {
//return a circle of GREEN color after `Online :' below
}
else {
//return a circle of RED color after `Online :' below
}
}
return (
<Alert variant={'success'}>
<Row className="followerRow">
<BarChartFill size={26} color='black' /><br/><b>Online:{props.isOnline} </b>
{/* if Online:true => <CircleFill color='green' />
else if Online:false => <CircleFill color='red' /> */}
</Row>
</Alert>
);
};
export default TitleHeadComponent;
就这样更新:
function circleColor(isNow) {
if(isNow === true) {
return <CircleFill color='green' />
}
else {
return <CircleFill color='red' />
}
}
return (
<Alert variant={'success'}>
<Row className="followerRow">
<BarChartFill size={26} color='black' /><br/><b>Online:{props.isOnline} </b>
{circleColor(props.isOnline)}
</Row>
</Alert>
);
或者你可以这样写:
function circleColor(isNow) {
return <CircleFill color={isNow ? 'green' : 'red'} />
}
考虑仅 return 从函数中获取颜色字符串,并使用该 return 值作为传递渲染组件的道具:
function circleColor(isNow) {
if (isNow) {
return "green";
}
return "red";
}
return (
<Alert variant={"success"}>
<Row className="followerRow">
<BarChartFill size={26} color="black" />
<br />
<b>Online:{props.isOnline} </b>
<CircleFill color={circleColor(props.isOnline)} />
</Row>
</Alert>
);
我正在学习 reactJS,但遇到了一个问题。我制作了一个带有文本 ('Online') 的组件。我从 props 收到 Online as true/false
的状态。但是我想对组件的一部分(而不是整个组件)进行更改。就像这里我想更改 'online' 文本后使用的图标 CircleFill
的颜色。
我写了下面的代码,但不知道如何return那个小段?
import React,{useState} from 'react';
import { Row,Alert } from 'react-bootstrap';
import {BarChartFill, CircleFill } from 'react-bootstrap-icons';
const TitleHeadComponent = (props) => {
const [isNow, setisNow] = useState(props.isOnline);
function circleColor(isNow) {
if(isNow === true) {
//return a circle of GREEN color after `Online :' below
}
else {
//return a circle of RED color after `Online :' below
}
}
return (
<Alert variant={'success'}>
<Row className="followerRow">
<BarChartFill size={26} color='black' /><br/><b>Online:{props.isOnline} </b>
{/* if Online:true => <CircleFill color='green' />
else if Online:false => <CircleFill color='red' /> */}
</Row>
</Alert>
);
};
export default TitleHeadComponent;
就这样更新:
function circleColor(isNow) {
if(isNow === true) {
return <CircleFill color='green' />
}
else {
return <CircleFill color='red' />
}
}
return (
<Alert variant={'success'}>
<Row className="followerRow">
<BarChartFill size={26} color='black' /><br/><b>Online:{props.isOnline} </b>
{circleColor(props.isOnline)}
</Row>
</Alert>
);
或者你可以这样写:
function circleColor(isNow) {
return <CircleFill color={isNow ? 'green' : 'red'} />
}
考虑仅 return 从函数中获取颜色字符串,并使用该 return 值作为传递渲染组件的道具:
function circleColor(isNow) {
if (isNow) {
return "green";
}
return "red";
}
return (
<Alert variant={"success"}>
<Row className="followerRow">
<BarChartFill size={26} color="black" />
<br />
<b>Online:{props.isOnline} </b>
<CircleFill color={circleColor(props.isOnline)} />
</Row>
</Alert>
);