reactjs - useRef 通过单击按钮重置 textInput
问题描述
我正在为我的项目使用material-ui,并且在单击外部按钮时我正在执行将输入文本重置为空的功能,似乎没有成功
这是我的代码
var inputRef = useRef(null)
将 inputRef 分配给输入字段以访问 DOM
<TextField label="Student Name" ref={inputRef} />
单击它时将文本字段重置为空的外部按钮:
<Button variant="contained" color="primary" onClick={() => {inputRef.current.value = ""}}>
Reset
</Button>
并没有改变,如果可以的话,请在此处修改codeandbox链接中的代码,非常感谢
解决方案
您在步骤中做错了:将 inputRef 分配给输入字段以访问 DOM。它应该是一个引用input element
(text field component
实际上是一个 div)。
您应该有value
Textfield 的状态或使用inputRef
而不是ref
指向输入元素。演示
import React, { useRef } from "react";
import { TextField, Button } from "@material-ui/core";
import "./styles.css";
export default function App() {
var inputRef = useRef(null);
return (
<div className="App">
<TextField label="Student Name" inputRef={inputRef} />
<Button
onClick={() => {
console.log(inputRef);
inputRef.current.value = "";
}}
variant="contained"
color="primary"
>
Reset
</Button>
</div>
);
}
推荐阅读
- rest - .NET web 2.0 API,503 服务不可用
- typescript - 升级到 Typescript 2.9.1 后出现“TS2300: Duplicate identifier 'Account'”错误
- swift - 使用 imageView 作为具有 preferLargeTitles 的导航栏的标题
- javascript - 如何在javascript中有条件地发送异步请求作为预请求?
- git - 即使没有发生错误,git pull 也不起作用
- msbuild - 如果我有对某些 dll 的引用,请在 csproj 文件中定义常量
- php - 宾果游戏 - 如何点击/显示选择
- html - 复选框和同级选择器
- angular - 如何通过 AnimationPlayer 或 AnimationReferenceMetadata 提供无限动画(需要替代方案)
- ios - 如果在 NSPredicate 中使用 OR,则无法成功过滤结果