场景回现:
后端返回来cityCode的值,表单初始值通过cityCode的值,映射不到city的名称,页面一直显示的是城市code,而不是城市名称
<FormItem {...formItemLayout} label="城市名称" > {getFieldDecorator('cityCode', { initialValue:this.state.edit ? this.state.editData.cityCode :undefined, rules: [{ required: true,message:'请选择城市名称' }], })( <Select placeholder="请选择" allowClear> { cityData && cityData.map((item, index) => ( <Option key={item.no} value={item.no}>{item.nameCn}</Option> )) } </Select> )} </FormItem>
解决办法:在获取完详情后,绑定一个回掉函数,在这个函数中,再次调一下获取城市的数据(相当于初始化数据,重新获取数据,刷新页面)。(附类似解决代码)
//弹框并获取详情 getDetail=(obj)=>{ this.setState({ visible:true, editData:{ no:obj.provinceCode, cityCode:obj.cityCode, } },()=>this.getInitilData()) } //回掉函数 getInitilData=()=>{ let provinceCode = this.state.editData.no; this.selectShow(1,provinceCode) } selectShow=(from,value)=>{ commonRequest({ url:`/list/getCities?provinceCode=${value}`, }).then(data=>{ this.setState({cityData:data}) if(from == 2) { this.props.form.setFieldsValue( { cityCode: undefined }); } }) }