一个自定义 Modal
组件,为什么这里子组件的 getLogTable
函数会在子组件渲染的时候执行啊?
不应该等到 showOperationLogModal
为 true
的时候才渲染 Modal
内部的内容吗?
父组件(初始值为false)
<OperateLogModal showOperationLogModal={showOperationLogModal} />
子组件
const OperateLogModal = (props) => {
const { showOperationLogModal } = props;
return (
<div>
<Modal
className="w-modal"
title="版本日志"
visible={showOperationLogModal}
maskClosable
destroyOnClose
onCancel={onCancelLog}
footer={null}
>
{getLogTable()}
</Modal>
</div>
);
};
这里和函数加括号立即执行应该没关系吧。可能还是在于 Modal
在渲染时机,有佬讲解下吗,应该是什么问题呢
看那么久了还没人回答,但是我不怎么用React,所以我就按照我对于JS运行机制的理解回答一下。
你的
showOperationLogModal
但是你的内容物{ getLogTable() }
还是需要被执行的,然后返回结果传递给Modal
的内容插槽当中。只不过最终处理完的Modal
组件并不会被渲染到页面当中。如果你有一些执行条件,可以做一些条件判断,比如说:
{ showOperationLogModal ? getLogTable() : '' }
,来保证getLogTable
不会被执行。当然可能这个处理会不合理,那就需要React技术栈的开发者来回答了。