Javascript java脚本回调函数
对于访问React元素或组件,“ref”是最好的方法吗? 我们在ReactJS中有其他相同的选项吗Javascript java脚本回调函数,javascript,reactjs,react-jsx,ref,Javascript,Reactjs,React Jsx,Ref,对于访问React元素或组件,“ref”是最好的方法吗? 我们在ReactJS中有其他相同的选项吗 <TextField ref={(elem) => this.textField = elem} value={value} {...restProps} /> this.textField=elem} value={value} {…restProps} /> 如果要访问实际的DOM节点,则ref是唯一的选项。通常,refs用于创建不受控制的组件,我们
<TextField
ref={(elem) => this.textField = elem}
value={value}
{...restProps}
/>
this.textField=elem}
value={value}
{…restProps}
/>
如果要访问实际的DOM节点,则ref
是唯一的选项。通常,ref
s用于创建不受控制的组件,我们让DOM负责输入的值,并在需要时从对DOM节点的引用中获取值。您不能将value
用作这些组件上的道具,但可以使用defaultValue
设置其初始值:
class WithUncontrolledTextInput extends React.Component {
constructor() {
super();
this.handleSubmit = this.handleSubmit.bind(this);
}
handleSubmit(e) {
e.preventDefault();
console.log(`The input value is ${this.textField.value}`);
}
render() {
return (
<form onSubmit={this.handleSubmit}>
<input ref={input => this.textField = input} defaultValue='hello' />
<input type='submit' value='Submit' />
</form>
);
}
}
类WithUncontrolledDesiveput扩展了React.Component{
构造函数(){
超级();
this.handleSubmit=this.handleSubmit.bind(this);
}
handleSubmit(e){
e、 预防默认值();
log(`输入值为${this.textField.value}`);
}
render(){
返回(
this.textField=input}defaultValue='hello'/>
);
}
}
另一种方法是使用受控组件,其中输入的当前值存储在组件的状态中,并在输入值更新时更新
class WithControlledTextInput extends React.Component {
constructor() {
super();
this.state = {
textField: 'hello'
};
this.handleSubmit = this.handleSubmit.bind(this);
this.handleInput = this.handleInput.bind(this);
}
handleSubmit(e) {
e.preventDefault();
console.log(`The input value is ${this.state.textField}`);
}
handleInput(e) {
this.setState({
textField: e.target.value
});
}
render() {
return (
<form onSubmit={this.handleSubmit}>
<input value={this.state.textField} onChange={this.handleInput} />
<input type='submit' value='Submit' />
</form>
);
}
}
带有ControlledDesiveput的类扩展了React.Component{
构造函数(){
超级();
此.state={
textField:'你好'
};
this.handleSubmit=this.handleSubmit.bind(this);
this.handleInput=this.handleInput.bind(this);
}
handleSubmit(e){
e、 预防默认值();
log(`输入值为${this.state.textField}`);
}
手动输入(e){
这是我的国家({
textField:e.target.value
});
}
render(){
返回(
);
}
}
您计划如何处理文本字段
?我只想从无状态文本字段组件读取输入值