在componentDidMount上反应设置检查的属性

时间:2018-10-28 07:07:34

标签: reactjs forms dom radio

我有多页表单,如果要返回,我想设置选中的字段,我想出了办法,但是没有按预期工作。

我找到了需要检查的元素,分配了属性,但是UI上什么都没有发生,Chrome devtools中有选中的属性

代码如下:

 if (Object.keys(this.props.data).length > 0) {
      const elements = this.formRef.current.elements;
      const IDs = ['1', '2', '3', '4', '5', '6']
      IDs.map(id => {
        if (elements[id]) {
          if (Array.from(elements[id]).length > 1) {
            let radio = Array.from(elements[id]).find(el => el.value == this.props.data.subData[id])
             let r = ReactDOM.findDOMNode(radio);
             r.checked = true;
          } else {
            if (id === 1) {
              this.setState({
                dropdownValue: this.props.data.subData[id]
              })
            }
            let r = ReactDOM.findDOMNode(elements[id]);
             r.value = this.props.data.subData[id]
          }
        }
      })
    }
  }

这里是一个组件:

 <Radio
     label='...'
     desc='...'
     id='...'
     name='...'
     options={[
          { id: '...', label: '...', value: '...', name: '...' },
          { id: '...', label: '...', value: '...', name: '...' }]}
 />

返回以下内容:

<div className='form-input-group'>
        <label>{label} <span>{desc}</span></label>
        {options.map((option, index) => (
          <RadioItem
            key={index}
            option={option}
            defaultValue={this.state.value}
            onChange={this.handleChange}
          />
        ))}
      </div>

0 个答案:

没有答案