Вы можете сделать что-то вроде ...
class Page extends React.Component {
constructor(props) {
super(props);
this.state = props.warn;
}
render() {
return (
<div>
{this.props.warn && <div className="warning">Warning!</div>}
</div>
);
}
}
ReactDOM.render(
<Page warn={true}/>,
document.getElementById('root')
);
Где {this.props.warn && <div className="warning">Warning!</div>}
оценит, является ли условие истинным, и, если да, отобразит компонент.
Если вы хотите сделать более сложный функциональный компонент, я бы предложил создать его вне вашего компонента с состоянием, как это ...
const Warning = () => {
return (<div className="warning">Warning!</div>);
}
class Page extends React.Component {
constructor(props) {
super(props);
this.state = props.warn;
}
render() {
return (
<div>
{this.props.warn && <Warning />}
</div>
);
}
}
ReactDOM.render(
<Page warn={true}/>,
document.getElementById('root')
);
Я бы порекомендовал этот метод в соответствии с лучшими практиками React, поскольку за пределами codepen вы могли бы иметь разные файлы для разных компонентов.
Вот иллюстрация к перу: https://codepen.io/paulmartin91/pen/zYGKRNa
надеюсь, это поможет!