使用defaultChecked / checked prop的BlueprintJS RadioGroup / Radio问题

时间:2017-03-23 21:52:02

标签: blueprintjs

我尝试设置一个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的输入,其中包含checked和   defaultChecked道具。输入元素必须是受控的或   不受控制(指定已检查的prop或defaultChecked   道具,但不是两个)。决定使用受控制还是不受控制   输入元素并删除其中一个道具。更多信息:   反应控制的组件

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

2 个答案:

答案 0 :(得分:1)

defaultChecked仅在不受控制的使用中受支持(这是一个核心的React概念,而不是Blueprint的东西),而checked仅在受控使用中受支持 - 这就是React错误告诉的内容你。

但是,如果你正在使用RadioGroup,那么所有Radio个孩子都会被迫进入受控模式,所有州都应该通过RadioGroup。但是RadioGroup目前不支持defaultValue道具,所以这实际上是不可能的。我把它称为蓝图中的一个错误,所以很好找!

请在回购邮件上file an issue,我们会考虑实施这个(或者更好的是,提交修复公关!)

答案 1 :(得分:0)

我有同样的错误,我使用useState并设置了要声明为默认状态的值

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

因为我们不能使用defaultChecked,所以我使用上述方法来获取默认检查的选项。