在 React 中创建 <select> 元素
介绍
React 支持所有类型的 DOM HTML 元素,可用于通过各种组件(如文本输入、文件上传、选择、单选按钮和复选框)实现表单或其他功能。
在 Web 应用开发中,您可能需要根据某些条件动态创建元素。在本指南中,您将学习如何创建动态选择元素并呈现选择元素的动态选项。
创建动态选择元素
select 元素是一种常见元素,允许用户从可用选项列表中选择特定元素。select 元素可以通过两种不同的方式创建:使用静态元素添加到 DOM 中或将其动态添加到 DOM 中。
下面是一些需要 Axios 包的示例,它们可以帮助您掌握创建动态选择元素的过程。Axios 是一个HttpClient,可帮助发出 HTTP 请求,例如GET、POST、PUT和DELETE。
使用以下代码安装 Axios:
npm install axios
现在您已经安装了该软件包,请创建一个虚拟示例来演示动态选择元素。参考组件App.js并实现 AXIOS GET API 调用,如下所示。
import React, { Component } from "react";
import { render } from "react-dom";
import DynamicSelect from "./DynamicSelect";
import axios from "axios";
class App extends Component {
constructor() {
super();
this.state = {
};
}
componentDidMount() {
var self = this;
axios
.get("https://reqres.in/api/users?page=1", {
mode: "no-cors"
})
.then(function(response) {
self.setState({ users: response.data.data });
})
.catch(function(error) {
console.log(error);
});
}
render() {
const { users } = this.state;
return (
<div>
<DynamicSelect users={users} />
</div>
);
}
}
render(<App />, document.getElementById("root"));
在上面的例子中,Axios API 调用实现了生命周期钩子componentDidMount()。
因此,一旦响应成功,详细信息就会添加到状态变量用户中,如下所示。
.then(function(response) {
self.setState({ users: response.data.data });
})
从状态获取值后,下一步是将数据发送给子组件,如下所示。
render() {
const { users } = this.state;
return (
<div>
<DynamicSelect users={users} />
</div>
);
}
现在,定义上面代码中使用的组件DynamicSelect.jsx 。
import React, { Component } from "react";
class DynamicSelect extends Component {
constructor() {
super();
this.onChangeUser = this.onChangeUser.bind(this);
}
onChangeUser(event) {
console.log(event.target.value);
}
render() {
const { users } = this.props;
return (
<div>
This is dynamic select element demo
<div>
<span>Select user</span> :
{users && users.length > 0 && (
<div>
/* Adding dynamic select element */
<select onChange={this.onChangeUser}>
{users.map((user, index) => {
return <option>{user.email}</option>;
})}
</select>
</div>
)}
</div>
</div>
);
}
}
export default DynamicSelect;
现在让我们看一下上述组件中实现的每个功能。
在render()函数内部,你将观察到有一个条件,它标识了来自 props users 的足够值。
{users && users.length > 0 && () }
因此,一旦从 props users中找到足够的记录,就会创建动态<select>元素;否则,就不会创建。
一旦用户改变了选择的值,它就会反映该事件并可以按如下所示使用。
onChangeUser(event) {
console.log(event.target.value);
}
这样,您可以根据条件或自定义业务逻辑创建动态<select>元素并将其呈现到 DOM 中。
呈现动态选项的另一种方法
在上面的例子中,为了映射用户,我使用了map()函数,该函数来自名为App 的父组件。
您还可以实现返回动态<options>的函数,并且可以在<select>元素内添加选项。
render() {
return (
<div>
This is dynamic select element demo
<div>
<span>Select user</span> :{" "}
<select onChange={this.onChangeUser}>
{this.renderOptions()}
</select>
</div>
</div>
);
}
在<select>元素中,你会发现有一个名为this.renderOptions() 的函数,该函数应该返回动态<options>,可以按如下方式实现。
renderOptions() {
const { users } = this.props;
return (
users &&
users.length > 0 &&
users.map((user, index) => {
return <option>{user.email}</option>;
})
);
}
从函数renderOptions()中,可以返回用户的动态列表,并且可以在<select>元素内使用它。
这是一种用于规范代码的实现,有助于直接构造组件。
结论
React 应用程序可能包含动态表单字段,包括<select>元素,其中包含多个可供选择的选项。
在本指南中,您学习了根据条件添加动态<select>和<options>元素的标准机制。我希望它能帮助您在 React 应用中实现动态表单控件。
免责声明:本内容来源于第三方作者授权、网友推荐或互联网整理,旨在为广大用户提供学习与参考之用。所有文本和图片版权归原创网站或作者本人所有,其观点并不代表本站立场。如有任何版权侵犯或转载不当之情况,请与我们取得联系,我们将尽快进行相关处理与修改。感谢您的理解与支持!
请先 登录后发表评论 ~