select的defaultValue在初始化之后不会再重载哦,如果需要实现题目中的效果,需要给select加上value配合onChange函数来做。
示例:
state = {
projects: [],
value: ''
}
componentDidMount() {
// 模拟ajax调用,成功之后把需要改变的默认值赋值给this.state.value
setTimeout(() => {
this.setState({
projects: [{ id: 1, name: '花生' }, { id: 2, name: '苹果' }, { id: 3, name: '杨桃' }],
value: 1
})
}, 1000)
}
handleChange = e => {
this.setState({
value: e.target.value
})
}
render() {
let projects = this.state.projects
return (
{/* 这里不用再去判断project的长度是否大于0,在ajax里面做判断就行,如果小于零或者不存在它就是默认值 */}
{projects.length > 0 && projects.map((item, i) => {
return {item.name}
})}
);
}