export class ProjectList extends Component{
constructor(props){
super(props)
this.state={
project:[],
}
}
componentDidMount(){
axios.get('http://127.0.0.1:9090/pro/pList').then(res =>{
this.setState({
project:res.data.page.datas
})
})
}
render(){
return (
<Select key='project' style={{width:"100%"}} placeholder="请选择项目">
{
this.state.project.map((item,i) =>{
return(
<Option key={`project${i}`} value={item.id}>{item.name}</Option>
)
})
}
</Select>
)
}
}
class AddOrderType extends Component{
render(){
return(
<Modal
title="调整角色"
wrapClassName="vertical-center-modal"
visible={this.props.ishow}
onOk={this.handleOk}
onCancel={this.handleCancel}
footer={[
<Button key="back" size="large" onClick={this.handleCancel}>取消</Button>,
<Button key="submit" type="primary" size="large" loading={loading} onClick={this.handleOk}>
提交
</Button>,
]}
>
<FormItem
{...formItemLayout}
label="所属项目"
>
{getFieldDecorator('project',{
rules: [{
required: true,
message: '所属项目!'
}],
})(<ProjectList values={this.state.values} onChange={this.onChange} />)}//这里就是上面声明的组件
</FormItem>
</Modal>
)
}
}
现在是个弹出框在弹出框里包含了一个这样的select 因为很多地方都要用到这个select 所以我把select又封装了一下。现在弹出框正常 select组件也正常,但是当用户操作了一下select之后关闭弹出框,再次打开,这个select的值就是上次操作的值,并没有被重置掉。如果用value赋值,会导致select变成无法操作的状态.如果用defaultValue的话只能在第一次加载时有效。
**
不要只说一些理论上的东西,比如通过props重置之类的含糊不清的回答,请在实践后作出合理的回答。
**
这算不上封装。
将
Select
组件变为受控组件就可以了。