[英]conditional passing component as array prop in react
How can I conditionally pass the footer's button component? 如何有条件地传递页脚的按钮组件? cancelBtnBasicModal
and okBtnBasicModal
the button is still there without text label. cancelBtnBasicModal
和okBtnBasicModal
该按钮仍然没有文本标签。
Below is a modal component, it worked, but if I don't pass in 下面是一个模态组件,它起作用了,但是如果我不传递
render() {
const { titleBasicModal, showBasicModal, handleOkBasicModal, handleCancelBasicModal,
contentBasicModal, cancelBtnBasicModal, okBtnBasicModal, loading } = this.props
return (
<div>
<Modal
visible={showBasicModal}
title={titleBasicModal}
onCancel={handleCancelBasicModal}
footer={[
<Button onClick={handleCancelBasicModal}>
{cancelBtnBasicModal}
</Button>,
<Button key="submit" type="primary" size="large" loading={loading} onClick={handleOkBasicModal}>
{okBtnBasicModal}
</Button>
]}
>
{contentBasicModal}
</Modal>
</div>
);
}
I tried 我试过了
footer={[
{cancelBtnBasicModal && <Button onClick={handleCancelBasicModal}>
{cancelBtnBasicModal}
</Button>},
<Button key="submit" type="primary" size="large" loading={loading} onClick={handleOkBasicModal}>
{okBtnBasicModal}
</Button>
]}
But won't work coz footer prop accept array. 但是将不起作用。
You need to pass an Array, spread
operation is for rescue. 您需要传递一个数组, spread
操作是为了营救。 You can do something like that: 您可以执行以下操作:
footer={[
...(cancelBtnBasicModal ? [
<Button onClick={handleCancelBasicModal}>
{cancelBtnBasicModal}
</Button>]: []),
<Button key="submit" type="primary" size="large" loading={loading} onClick={handleOkBasicModal}>
{okBtnBasicModal}
</Button>
]}
You can separate that logic by setting an array footerBtns
with the default button ( okBtnBasicModal
in this case) and then we add the next button if it's passed through props
. 您可以通过使用默认按钮(在本例中为okBtnBasicModal
)设置数组footerBtns
来分隔该逻辑,然后如果下一个按钮通过props
,则添加下一个按钮。
Finally assign footerBtns
to footer
in the Modal
component. 最后将footerBtns
分配给Modal
组件中的footer
。
render() {
const { titleBasicModal, showBasicModal, handleOkBasicModal,
handleCancelBasicModal, contentBasicModal, cancelBtnBasicModal,
okBtnBasicModal, loading } = this.props
let footerBtns = [
<Button key="submit" type="primary" size="large" loading={loading}
onClick={handleOkBasicModal}>
{okBtnBasicModal}
</Button>
]
/* using unshift to add the button to the beginning of the Array */
cancelBasicModal && footerBtns.unshift(
<Button onClick=
{handleCancelBasicModal}>{cancelBtnBasicModal}
</Button>
);
return (
<div>
<Modal
visible={showBasicModal}
title={titleBasicModal}
onCancel={handleCancelBasicModal}
footer={footerBtns}>
{contentBasicModal}
</Modal>
</div>
);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.