构建系统 CTA/回调函数不起作用



我正在开发一个构建/设计系统。一切都很好。唯一的问题是当我发布包并尝试使用回调函数时。它没有正确返回我进入下一个屏幕所需的数据。

我试图在CodeSandbox中为您获取一个可复制的示例,然而,有一些小的含义/错误不允许我了解我现在与您谈论的特定错误。这似乎有其自身的问题

那么,如何重现这个错误呢?嗯,我们现在的包裹是公开的。如上所述,您无法导入CodeSandbox,因为它在React版本上会出现其他错误(如前所述,我稍后会处理(。程序包名称为@sandboxcommerceeng/react,您可能需要的scss程序包为@sandboxcommerceeng/scss。继续并导入到CSS文件中。@import '@sandboxcommerceeng/scss/lib/global.css'。然后在@sandboxcommerceeng/react程序包中,导入ECommercePlatformModal。下面的代码会给你一个可重复的错误。Platforms型,也由@sandboxcommerceeng/react导出

const [showEcommerceModal, setShowEcommerceModal] = React.useState<boolean>(false);
const [url, setUrl] = React.useState<string>('');
const [selectedPlatform, setSelectedPlatform] = React.useState<keyof Platforms>();
<ECommercePlatformModal
selectedPlatform={selectedPlatform}
onSelectPlatform={(platform: keyof Platforms | undefined) =>
setSelectedPlatform(platform)
}
showModal={showEcommerceModal}
onCancel={() => setShowEcommerceModal(false)}
okButtonProps={{ onClick: () => console.log(url) }} // ✴
urlValidated={true}
onUrlChange={(e: React.ChangeEvent<HTMLInputElement>) => {
setUrl(e.target.value);
}}
url={url}
/>

✴:我无法使用回调从状态获取URL。我试过单独引用一个回调函数,然后从那里记录URL。我还尝试过从回调中粘贴URL。什么都不起作用。

最终目标

这里的最终目标是拥有它,这样我就可以将我的包应用到我的React应用程序中,并使包功能,即包中实现的javascript代码,按预期工作。对该特定组件的期望是能够console.logurl,并将其从callback功能okButtonProp{{onClick: () => console.log(url)}}显示在包中


如果您还需要我提供什么,请告诉我。

您的答案就在这里。(这可能只是一条评论,但还没有足够的声誉:(。

调试后,问题确实存在于构建系统本身。在按钮组件上使用React.memo是罪魁祸首。由于组件上没有任何道具实际发生变化,因此记忆没有按预期工作,因此它没有用新的功能和变量重新呈现按钮组件。

我继续从记忆组件中删除了记忆,因为我看不到在这种情况下适合记忆的方法。

最新更新