javascript - 什么是 React 应用程序中不受控制的输入字段
问题描述
React 说输入字段是不受控制的字段是什么意思?它将如何影响具有不受控制的输入字段形式的网页。更改字段值时,我可以在控制台中看到一条警告消息,除此之外,应用程序还会出现哪些其他问题?
解决方案
根据我有限的理解,“受控”输入是指您使用反应状态来“控制”输入的值(通常通过将 value 属性分配给状态变量并通过更新状态来处理输入的更改)。“不受控制的”输入是指其值不是由状态决定且独立运行的输入。这些输入及其值通常使用 Refs 访问。
也许这个示例将有助于更好地澄清事情。这是一个简单的应用程序,它有一个受控输入和一个不受控输入。
示例代码:
import React from "react";
import ReactDOM from "react-dom";
import "./styles.css";
class App extends React.Component {
constructor(props) {
super(props);
this.state = {
value: ""
};
this.inputRef = React.createRef();
}
handleChange = e => {
this.setState({
value: e.target.value
});
};
handleRefChange = e => {
const el = this.inputRef.current;
// Handle value here as needed
console.log(el.value);
};
render() {
return (
<div className="App">
<h1>Controlled vs Uncontrolled Inputs</h1>
<h2>Controlled</h2>
<label for="controlled">Controlled</label>
<input
id="controlled"
onChange={this.handleChange}
value={this.state.value}
type="text"
/>
<p> Value: {this.state.value} </p>
<h2>Uncontrolled</h2>
<label for="uncontrolled">Controlled</label>
<input
id="uncontrolled"
onChange={this.handleRefChange}
ref={this.inputRef}
type="text"
/>
</div>
);
}
}
const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);
参考:
推荐阅读
- python - 使用 Excel 创建 CSV 文件的问题
- azure - 如何通过 Graph API 仅获取用户所有属性的列表
- ionic-framework - 在本地时区打开 ion-datetime
- javascript - 自执行函数的奇怪之处
- python - 在Python中使用字符串上的字典解码消息
- android - 使用 Volley 从服务器成功响应后隐藏 ProgressBar
- angular - Angular 6 Unable to read Octet-stream in HttpClient 错误消息:“解析过程中的 Http 失败...”
- sql - PostgreSQL 行读锁
- c - 查找所有可用的 3 位数组合
- ios - 在可本地化文件中将文本编码更改为无显式