如何在React用户表单中为标签添加for

386 阅读2分钟

在本教程中,我们将学习如何在React用户表单中为标签添加for。

React框架忽略了标签元素的for属性。

在HTML标签中,"for "属性有什么作用?

React提供了创建网站的网络可访问性指南。它帮助我们每个人都能浏览和访问页面内容。标签有助于了解每个表单输入控件的人类可读文本,并帮助盲人、键盘和鼠标用户。

当你在Html页面中创建一个表单时,你将创建一个标签和输入,并绑定在一起,如下图所示

<label for="name">Name</label>
<input id="name" type="text" />

通常情况下,标签是通过for 属性与输入文本绑定的。输入控件的id与标签的for属性相匹配。这适用于复选框、单选和选择控件。

如果你在React JSX中使用同样的代码,它在组件加载过程中会中断

并抛出以下错误

无效的DOM属性for 。你是说htmlFor 吗?

React没有标签的for 属性。它定义了htmlFor 属性。

原因是,你在用JSX语法写html代码。JSX是对javascript的扩展,可以执行javascript代码。for 是javascript中的一个关键字或保留词。所以我们不能直接使用

所以我们必须使用htmlFor 属性,如下图所示

注意:React是区分大小写的,第一个字母是小写的,第二个字母是大写的 下面是一个标签组件的React例子

import React, { Component } from 'react';
import { render } from 'react-dom';
import Hello from './Hello';
import './style.css';

interface AppProps {}
interface AppState {
  name: string;
}

class App extends Component {
  constructor(props) {
    super(props);
    this.state = {
      name: 'React'
    };
  }

  render() {
    return (
      
        Name
        
      
    );
  }
}

render(, document.getElementById('root'));

一旦这个组件被渲染,生成的DOM包含for 属性,而不是htmlFor 属性的标签。当你检查代码时,你会看到以下代码

<html class=" "><head>
  </head>
<body><div id="root"><div><label for="name">Name</label><input id="name" type="text"></div></div></body></html>