[英]How to create static function outside a component in Next.js?
当我阅读Next.js 中的 Persistent Layout Patterns文章时,有一部分我无法理解。
// /pages/account-settings/basic-information.js
import SiteLayout from '../../components/SiteLayout'
import AccountSettingsLayout from '../../components/AccountSettingsLayout'
const AccountSettingsBasicInformation = () => <div>{/* ... */}</div>
AccountSettingsBasicInformation.getLayout = page => (
<SiteLayout>
<AccountSettingsLayout>{page}</AccountSettingsLayout>
</SiteLayout>
)
export default AccountSettingsBasicInformation
在选项 4 中,静态函数 getLayout 添加到AccountSettingsBasicInformation 。
然而AccountSettingsBasicInformation是一个组件而不是一个对象。
是否可以像这样在组件中添加静态函数?
我还创建了测试组件来测试它,但我收到了打字稿错误说
“FC”类型不存在属性“hello”。
interface ITestProps {
hello: () => void;
}
const Test: React.FC<ITestProps> = () => {
return <TestFilter />;
};
Test.hello = () => { <div> this is a test </div> } // Test.hello occurs the error
export default Test;
我在 ITestProps 声明了 hello 类型,但为什么我收到错误?
除了基本类型之外的任何东西都是对象,包括 es6 类和函数。
但是打字稿有能力强制执行对象具有的属性,
所以你可以说AccountSettingsBasicInformation.getLayout
因为 AccountSettingsBasicInformation 没有类型声明,打字稿认为它是 any(包括基本类型和具有任何属性的对象)
但是您将Test
声明为React.FC<ITestProps>
因此打字稿强制其属性与React.FC<ITestProps>
相同,因此它会打印出错误
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.