我有一个由Security
组件包裹的表单,以确保没有特定权限的用户看不到它。问题是我在每次击键时都失去了对输入字段的关注。
<Security
component={() => (
<FormItem
label='Name
form={form}
name="name"
rules={[RequiredRule]}
>
<Input />
</FormItem>
)}
/>
export const Security = ({ component: Component, history, permissions, ...props }) => {
// if user has permissions returns the component otherwise returns null
};
为简洁起见,我跳过了几行代码,但要点是我将Form.Item
传递到Security
组件中,并根据条件决定是否为null或所传递的组件。
如果我注释掉Security
包装程序,焦点问题就不会继续存在。
答案 0 :(得分:0)
事实证明,我不应该将Form.Item
属性中的component
声明为箭头函数,而是将其放在我的render
方法之外的变量中。
formToRender = () => {
return (
<FormItem
label='Name'
form={form}
name="name"
rules={[RequiredRule]}
>
<Input />
</FormItem>
)
}
<Security
component={formToRender}
/>
,我找到了解决方案