javascript - 如何在呈现页面时将下拉选择更改为其保存的值?
问题描述
我的问题很难解释,但我希望我能很好地描述它以使其有意义。本质上,我有一个保存员工数据的表单,并且我在表单中有一个部分保存员工的辅助电话号码。我旁边有两个下拉列表,指定次要号码出于联系原因可用的时间。完成后,我将表单保存到我们的 sql 数据库中。我不确定这是否可能,但是当我从我们的应用程序中提取这些员工数据时,我希望使用之前的当前值来选择下拉列表。现在我不确定使用 select 是否是最好的方法,或者我是否应该以不同的方式进行操作,任何建议都会有所帮助,谢谢!
请注意,我从数据库接收的这个对象是一个 JSON 对象,如下所示:{"From":"1:00pm", "To":"8:00pm"}。当在我们的应用程序中选择该员工时,我将获取此信息并将其解析为状态变量。
员工.js
export default class Employee extends Component{
if(this.props.employeeKey){
constructor(props){
super(props);
this.state = {
Name: this.props.name,
Phone: this.props.phone,
SecondaryPhone: this.props.secondaryPhone,
AvailTimes: JSON.parse(this.props.availTimes),
times: this.props.times,
TimeFrom: "",
TimeTo: ""
}else{
this.state = {
Name: "",
Phone: "",
SecondaryPhone: "",
AvailTimes: "",
times: [],
TimeFrom: "",
TimeTo: "",
}
}
}
onChange(value, e){
switch(value){
case "Phone": this.setState(Phone: e.target.value)
break;
case "Name": this.setState(Name: e.target.value)
break;
case "SecondaryPhone": this.setState(SecondaryPhone: e.target.value)
break;
case "FromTime": this.setState(TimeFrom: e.target.value)
break;
case "ToTime": this.setState(TimeTo: e.target.value)
break;
}
render(){
var divToRender = (
<label>
From:
<select onChange={this.onChange.bind(this, 'FromTime')}>{this.state.times.map(time => {return (<option value={time}> {time} </option>)})}</select>
</label>
<label>
To:
<select onChange={this.onChange.bind(this, 'ToTime')}>{this.state.times.map(time => {return (<option value={time}> {time} </option>)})}</select>
</label>
);
return divToRender
}
}
我正在考虑在我的状态之前调用 onChange() 方法以在加载页面时加载这些值,但我的猜测是它可能不起作用。
解决方案
找到这个可行的解决方案,但不确定它是否是最佳途径:
<select onChange={this.onChange.bind(this, 'FromTime')}>{this.state.times.map(time => {return (<option value={time} selected={this.state.TimeFrom == time}> {time} </option>)})}</select>
推荐阅读
- vb.net - Set three decimal places
- php - Laravel 8:试图获取非对象错误的属性“名称”
- mysql - Can someone shortly explain the relationship between these two tables
- ruby-on-rails - Submit Post Form from React to Ruby on Rails API
- node.js - Installation of expressJS using npm
- ios - How do I make the game scene fill the safe space in Xcode?
- node.js - 在生产代码中使用 CLI 是否正常?
- reactjs - react-router v5 how to properly accomplish nested routes?
- javascript - break or continue a for or while/do..while/for..in/for..of loop from a callback function inside of its' body?
- caching - Redis 为每个数据库设置 maxmemory