转发refs :
- 是react当中提供的一个ref的数据(不能在无状态组件当中来进行使用 因为无状态组件没有实例)
- 表示当前组件的真正实例的引用 他会返回绑定当前属性的元素
- 标识组件内部的元素–方便我们查找
react给我们提供了三种方式进行ref的使用
<mark>实现点击在控制台打印输入的数据值</mark>
1.字符串的方式
class Com extends React.Component{
fun=()=>{
console.log(this.refs.demoInput.value);
}
render(){
return(
<div>
我是组件
<input type="text" placeholder="请输入" ref="demoInput"/>
<button onClick={this.fun}>点我获得输入框的值</button>
</div>
)
}
}
ReactDOM.render(<Com />,document.getElementById('demoReact'));
2.回调函数(推荐)
就是在dom节点上或者组件上挂载函数 函数的入参(形参) 是dom节点 达到的它的效果字符串的方式是一样的,都是获取值的引用
class Com extends React.Component{
fun=()=>{
console.log(this.textInput.value);
}
render(){
return(
<div>
我是组件
<input type="text" placeholder="请输入" ref={(input)=>{this.textInput=input}}/>
<button onClick={this.fun}>点我获得输入框的值</button>
</div>
)
}
}
ReactDOM.render(<Com />,document.getElementById('demoReact'));
3.React.createRef() react 16.3新提供的一种方式
把值赋给一个变量 通过ref挂载在系欸但或者组件上 使用ref的current属性拿到这个节点
class Com extends React.Component{
constructor(props){
super(props);
this.myRef=React.createRef();
}
fun=()=>{
console.log(this.myRef.current.value);
}
render(){
return(
<div>
我是组件
<input type="text" placeholder="请输入" ref={this.myRef}/>
<button onClick={this.fun}>点我获得输入框的值</button>
</div>
)
}
}
ReactDOM.render(<Com />,document.getElementById('demoReact'));
官方当中建议我们 不要过渡的使用refs对逻辑进行处理, 需要优先考虑state