0

我正在尝试设置一个RadioGroup组件,该Radio组件最初检查了带有“数据”标签的组件。但是当我使用以下代码时:

<RadioGroup
  onChange={(e) => {
    this.store.setDataFilterSelection(e.target.value)
  }}
  >
  <Radio label='Data'
    defaultChecked
    value='1'
    className='radio-selectors' />
  <Radio label='Description'
    value='2'
    className='radio-selectors' />
  <Radio label='Data Source'
    value='3'
    className='radio-selectors' />
</RadioGroup>

我在控制台中收到以下警告。

Blueprint.Radio 包含一个 radio 类型的输入,带有 check 和 defaultChecked 属性。输入元素必须是受控或不受控的(指定选中的道具或 defaultChecked 道具,但不能同时指定两者)。决定使用受控或不受控的输入元素并删除这些道具之一。更多信息:反应控制组件

我尝试了几种变体,但似乎无法做到正确,基本上我希望能够监控单选按钮的变化,但我无法像示例中那样将它们绑定到状态这里:http ://blueprintjs.com/docs/#components.forms.radio

4

2 回答 2

2

defaultChecked仅在不受控制的使用中受支持(这是核心 React 概念,而不是蓝图),而checked仅在受控使用中受支持——这就是 React 错误告诉您的内容。

但是,如果您正在使用,RadioGroup那么所有Radio孩子都将被迫进入受控模式,并且所有状态都应该通过RadioGroup。但是RadioGroup目前不支持defaultValue道具,所以这实际上是不可能的。我将其称为蓝图中的错误,真是太好了!

请在 repo 上提出问题,我们将研究实施此问题(或者更好的是,提交带有修复程序的 PR!)

于 2017-03-24T18:46:23.730 回答
0

我有同样的错误,我使用了 useState 并设置了我们希望在声明状态时默认的值

const [radio, setRadio] = useState('defaultValue');.

由于我们不能使用 defaultChecked 我使用上面的方法来获得默认检查的选项。

于 2020-10-27T17:42:08.977 回答