javascript - 如何在 reactjs 版本 16.13.1 中获取输入文本的值
问题描述
我是 reactjs 的新手。我正在阅读如何获取输入值的文档。但我仍然收到未定义的错误。这就是我所做的。
class Test extends React.Component{
constructor(props){
super(props)
this.inputRef = React.createRef()
}
clickHandler(){
console.log(this.inputRef)
}
render(){
return(
<div>
<input type="text" ref={this.inputRef}/>
<button onClick={this.clickHandler}>click Me</button>
</div>
)
}
}
ReactDOM.render(<Test />, document.getElementById('root'));
解决方案
您的问题是您没有将 clickHandler 绑定到您的组件。
最简单的方法是使用箭头函数而不是类方法:
clickHandler=()=>{
console.log(this.inputRef)
}
否则,在您的构造函数中,您需要手动绑定 clickHandler:
constructor(props){
super(props)
this.inputRef = React.createRef()
this.clickHandler = this.clickHandler.bind(this);
}
这是使用箭头函数的示例(自动绑定)
class Test extends React.Component{
inputRef = React.createRef()
clickHandler=()=>{
console.log(this.inputRef.current.value)
}
render(){
return(
<div>
<input type="text" ref={this.inputRef}/>
<button onClick={this.clickHandler}>click Me</button>
</div>
)
}
}
ReactDOM.render(<Test />, document.getElementById('root'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.13.1/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.13.1/umd/react-dom.production.min.js"></script>
<div id="root"/>
推荐阅读
- javascript - 如何使用 xgettext 在 JS 中调用 xgettext 程序?
- php - 如何正确使用valid_file_mimetypes、valid_image_mimetypes?
- python - AWS API Lambda 代理集成中的返回错误响应
- c# - 如何使用默认自定义值 Html.DropDownListFor(...) 预填充下拉框
- android - 如何在改造中从服务器获取 json 之前检查结果代码
- c# - Fluent Validation - 有没有办法在何时运行异步操作?
- javascript - 为什么从状态单击按钮时不显示更新值?
- javascript - 用于从字段中删除字符的简单 Javascript 代码
- google-sheets - 如何根据条件过滤掉数据
- f# - 从 Fable.Remoting 返回异步值