如何在 antd 的 FormItem 内部,当 antd 复选框的值为假时将其选中?

huangapple go评论74阅读模式
英文:

How can I have an antd checkbox checked when its value is falsy inside an antd formItem?

问题

目前,我想要做的是“反转” antd 复选框组件的行为。当 antD formItemvalue / initialValuefalse 时,我想要复选框未选中。这是我的当前代码:

<FormItem
  label="在搜索中包括技能列表"
  labelCol={{ span: 24 }}
  initialValue={false}
  valuePropName="checked"
  name="ignoreSkills"
>
  <Checkbox value={false} defaultChecked={true}>搜索技能</Checkbox>
</FormItem>

如果复选框在 formItem 外部,设置 defaultChecked={true} 将有效,但当它在内部时,一切都会出问题。

我尝试过的方法:

  1. 仅使用 defaultChecked={true}。在 formItem 内部不起作用。
  2. 使用 checked={true} 属性。在 formItem 内部不起作用。

有没有办法在 antd 的 formItem 内部实现这一点?

英文:

Currently, what I would like to do is "inverse" the behavior of the antd checkbox component. I want to have the checkbox unchecked when the value / initialValue of the antD formItem is false. This is my current code

&lt;FormItem
  label=&quot;Include skills list in the search&quot;
  labelCol={{ span: 24 }}
  initialValue={false}
  valuePropName=&quot;checked&quot;
  name=&quot;ignoreSkills&quot;
&gt;
  &lt;Checkbox value={false} defaultChecked={true}&gt;Search on Skills&lt;/Checkbox&gt;
&lt;/FormItem&gt;

Setting the defaultChecked={true} works fine if the checkbox is OUTSIDE the formItem but when it's inside, everything just breaks.

Things I tried:

  1. Using the defaultChecked={true} alone. Doesn't work inside formItem
  2. Using the checked={true} property. Doesn't work inside formItem

Any idea how I can achieve this inside the antd formItem?

答案1

得分: 1

你可以使用 getValuePropsgetValueFromEvent 属性来实现相反的行为。getValueFromEvent 函数提供了从特定事件中提取值的自定义处理程序,例如对于复选框,我们需要从 e.target.checked 中获取值。因此,我们传递 valuePropName="checked"。你可以使用此函数来反转复选框的值。使用 getValueProps,你可以定义如何从属性中获取值。

英文:

You can use getValueProps & getValueFromEvent prop to achieve inverse behaviour. getValueFromEvent function provides a custom handler how to extract value from a particular event i.e. for checkbox we need to get value form e.target.checked. So we pass valuePropName=&quot;checked&quot;. You can inverse the value of checkbox using this function. Using getValueProps, you can define how to get value from props.

import { Checkbox, Form } from &#39;antd&#39;;

const App = () =&gt; {
	return (
		&lt;Form&gt;
			&lt;Form.Item
				label=&#39;Include skills list in the search&#39;
				labelCol={{ span: 24 }}
				valuePropName=&#39;checked&#39;
				name=&#39;ignoreSkills&#39;
				getValueProps={(value) =&gt; ({ checked: !value })}
				getValueFromEvent={(e) =&gt; !e.target.checked}
			&gt;
				&lt;Checkbox&gt;Search on Skills&lt;/Checkbox&gt;
			&lt;/Form.Item&gt;
		&lt;/Form&gt;
	);
};

export default App;

huangapple
  • 本文由 发表于 2023年2月27日 19:18:23
  • 转载请务必保留本文链接:https://go.coder-hub.com/75579784.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定