reactjs - 单击按钮后聚焦输入
问题描述
我目前正在尝试通过制作一个 Todo 列表来学习 React(我知道是原始的)。我还没有学到很多概念(我仍在使用类组件),但我想知道是否有推荐的方法来集中按下编辑按钮时出现的输入?
我尝试使用 createRef 但它似乎仍然不起作用。我想知道我的输入应该是一个单独的组件,专注于安装?
任何方向将不胜感激:
export class Item extends Component {
constructor(props){
super(props)
this.editInput = React.createRef()
this.state = {
editView: false
}
this.handleRemove = this.handleRemove.bind(this);
this.toggleView = this.toggleView.bind(this);
this.editMode = this.editMode.bind(this);
}
handleRemove(e){
this.props.remove(this.props.detail);
}
toggleView(){
this.setState(prevState => (
{editView: !prevState.editView }
))
}
editMode(){
this.toggleView();
this.editInput.current.focus();
}
render() {
const itemView = !this.state.editView ?<div className="item">{this.props.detail}</div> : <input ref={this.editInput} className="edit-item-input" placeholder={this.props.detail + "..."}></input> ;
return (
<div className="item-container">
{itemView}
<div className="buttons">
<button onClick={this.editMode} className="button button-edit">Edit</button>
<button onClick={this.handleRemove} className="button button-delete">Delete</button>
</div>
</div>
)
}
}
解决方案
您可以在元素上添加 ReactautoFocus
属性,input
它应该可以按您的意愿工作。
推荐阅读
- c++ - cstdlib 中的“系统”命令在 ESXi 中不起作用
- c# - NuGet 客户端 SDK - 通过代码连接到私有 NuGet 源
- c++ - 内核模式驱动程序 BSOD PAGE_FAULT_IN_NONPAGED_AREA 在回调中使用全局 UNICODE_STRING
- node.js - Mongo DB如何在两个数组中找到共同点并在单个查询中按降序排序
- ruby-on-rails - rails 发送authentity_token 作为隐藏字段的值
- javascript - 在 Javascript 中删除日期字段中的 T 和 Z
- java - 如何在类路径中添加这些文件(* .jar)?没有任何 IDE
- r - stat_density_2d 不生成与原始数据匹配的轮廓
- java - 不使用 / ,* 或 % 将 2 个数字相除
- c - 不带内存保护单元的 CPU 上 IEC 61508 软件元素的独立性