【发布时间】:2019-05-25 18:22:06
【问题描述】:
我有一个 React 组件,它呈现了一些 html,并且部分 html 是一个选择元素。下面的代码用于显示初始选择元素的默认值,并在您选择另一个元素时更改所选值。
我的问题是我有一个人员列表,当您单击其中一个时,使用该人员的页面部分上的值会更新为该人的值(姓名、电子邮件等)。我相信这些都正确更新,因为this.props.agent 得到了更新。我目前没有深入了解该代码。我的问题是选择元素不尊重this.props.agent 中的更改,因此为team 重新选择了正确的保存值。我确定在constructor() 中使用state 不是正确的方法。
我是 React 新手,如果我的问题不准确或解释不够好,请原谅我。但是当this.props.agent 更新时,我怎样才能让它更新预先选择的选择选项呢?
import React from 'react'
import axios from 'axios'
export class AgentTeam extends React.Component {
constructor(props) {
super(props)
this.state = {
teams: [],
selectedTeam: this.props.agent.team || ''
}
this.handleOnClick = this.handleOnClick.bind(this)
this.handleOnChange = this.handleOnChange.bind(this)
}
componentDidMount() {
axios.get(
... ajax setup ...
).then(response => {
this.setState({
teams: response.data,
})
}).catch(error => {
throw error
})
}
handleOnClick() {
const selectedTeam = document.querySelector('.team-selection').value
axios.post( ...ajax stuff... )
}
handleOnChange = (event) => {
this.setState({
selectedTeam: event.target.value
})
}
render() {
const teamList = this.state.teams.map((team, i) =>
<option value={team.team_name} key={i}>
{team.team_name}
</option>
)
return (
<div>
<div className='agent-team-heading'>
<span>Team</span>
</div>
<div className='agent-team-selector'>
<select className='team-selection' value={this.state.selectedTeam} onChange={this.handleOnChange}>
<option value=''>Assign Team</option>
{teamList}
</select>
<button className="agent-team-button" onClick={this.handleOnClick}>
<span>SAVE</span>
</button>
</div>
</div>
)
}
}
【问题讨论】:
标签: javascript reactjs select state