含義
- 非受控組件:表單數據不受控與state的(未綁定value),使用React ref從DOM節點中獲取表單數據的組件
- 提示refs棄用

class MyForm extends React.Component {constructor(props) {super(props)}submit = (e) => {e.preventDefault()console.log(this.refs.refName.value)}render() {return (<form onSubmit={this.submit}><div>用戶名:<input type="text" ref="refName" placeholder="用戶名" /></div>{}<div><button type="submit">提交</button></div></form>)}
}
ReactDOM.render(<MyForm />,document.getElementById('app')
)
- 使用hooks React.createRef
- 打印
this.refName

class MyForm extends React.Component {constructor(props) {super(props)this.refName = React.createRef()this.refGender = React.createRef()this.refIsStu = React.createRef()this.refLans = React.createRef()}submit = (e) => {e.preventDefault()console.log(this.refGender.current.value)}render() {return (<form onSubmit={this.submit}><div>{}用戶名:<input type="text" placeholder="用戶名" ref={this.refName} /></div>{}<div>性別:<select ref={this.refGender} defaultValue="male"><option value="female">女</option><option value="male">男</option></select></div><div>{}<p>是否學生:是<input type="radio" defaultChecked={true}/>否<input type="radio" /></p><p>掌握語言:粵語<input type="checkbox" />英語<input type="checkbox" defaultChecked={true} /></p></div><div><button type="submit">提交</button></div></form>)}
}
ReactDOM.render(<MyForm />,document.getElementById('app')
)
- 注意:只要使用了value就要綁定onChange事件or設置
defaultValue
defaultValue
:form field的默認值,在組件掛載完畢后更新,不會導致DOM的更新
