反应.js |非受控与受控输入
在 HTML 中,、
现在,打开你的 react 项目并编辑 src 文件夹中的index.js文件:
源索引.js:
Javascript
import React from 'react';
import ReactDOM from 'react-dom';
import NameForm from './NameForm';
ReactDOM.render(
,
document.getElementById('root')
);
javascript
import React,{Component} from 'react';
class NameForm extends React.Component {
handleClick = () => {
const name = this._name.value;
alert('Hello ', name);
}
render() {
return (
this._name = inputValue}
placeholder="Enter your name" />
);
}
}
export default NameForm;
javascript
import React,{Component} from 'react';
class NameForm extends React.Component {
constructor(props) {
super(props);
this.state = {
name: '',
};
}
handleNameChange = (event) => {
this.setState({ name: event.target.value });
};
render() {
return (
{this.state.name}
);
}
}
export default NameForm;
在 react 项目中创建一个组件名称 NameForm.js:
现在,打开您的 react 项目并编辑 src 文件夹中的NameForm.js文件:
src NameForm.js:
javascript
import React,{Component} from 'react';
class NameForm extends React.Component {
handleClick = () => {
const name = this._name.value;
alert('Hello ', name);
}
render() {
return (
this._name = inputValue}
placeholder="Enter your name" />
);
}
}
export default NameForm;
输入:塔尼莎
输出: Hello Tanisha(显示在警报框上)
受控输入:在受控输入中,字段中始终存在某种变化和修正,输入的每个字符甚至退格键之类的内容都将被视为更改。输入字段的当前值将是类组件的一个属性(通常它将处于使用 this.state.varName 引用的状态。)因为它们不维护其内部状态。还有一个回调函数(如 onChange、onClick 等)是处理输入字段中发生的更改(值)所必需的,这使得它们可以控制。
现在,打开您的 react 项目并编辑 src 文件夹中的NameForm.js文件:
src NameForm.js:
javascript
import React,{Component} from 'react';
class NameForm extends React.Component {
constructor(props) {
super(props);
this.state = {
name: '',
};
}
handleNameChange = (event) => {
this.setState({ name: event.target.value });
};
render() {
return (
{this.state.name}
);
}
}
export default NameForm;
输入:塔尼莎
输出: Tanisha(在用户键入时逐个字母显示在屏幕上)
哪一个更好?
很明显,受控和不受控的表单域各有各的好处。您可能需要同时使用两者或其中一个,具体取决于具体情况。如果您正在制作一个简单的表单,几乎没有 UI 反馈并且不需要即时验证(这意味着您只会在提交时验证和/或需要值),那么您应该使用带有 refs 的不受控制的输入。它将在 DOM 中保留真实的来源,使其更快并需要更少的代码。如果您需要更多 UI 反馈并考虑到特定输入字段中的每一个微小变化,请选择受控输入。