作者:lailai | 来源:互联网 | 2022-12-10 12:20
我正在尝试创建一个邮政编码输入,以使用React-Admin在创建表单中自动加载街道,州和城市的值。如何根据onBlur
邮政编码输入的事件填充输入?我获得的最佳结果是以下情形:
我创建了一个具有4个输入的自定义组件:邮政编码(在我的国家称为CEP),街道地址,州和城市。然后,我onBlur
在zip输入上添加了一个事件,并根据状态属性在输入上设置了值。这是代码
class CustomAddressInput extends React.Component {
constructor(props){
super(props);
this.state = {
cep : '',
address : '',
uf : '',
city : '',
}
this.setAddress = this.setAddress.bind(this);
}
setAddress(e){
if(e.target.value != undefined){
endereco(e.target.value).then((result)=>{
this.setState({
cep: result.cep,
address: result.logradouro,
uf: result.uf,
city: result.localidade
});
});
}
}
render() {
const { classes } = this.props;
return (
this.setAddress(e)} defaultValue={this.state.cep} />
);
}
}
export default withStyles(styles)(CustomAddressInput);
我在创建时使用它
...
...
我知道我以错误的方式设置值,因为设置值时,会擦除所有创建表单。我该怎么办?我对使用React并不熟悉。提前致谢
1> Gabriel Marq..:
我认为我找到了执行此操作的正确方法。我将自动填充地址功能移至onChange
SimpleForm元素上的一个事件,并将其从CEP输入中删除。现在它就像一种魅力。这是代码:
自定义地址输入
export default withStyles(styles)(
class CustomAddressInput extends React.Component {
render() {
return (
);
}
}
);
和创建组件
const autoFillAddress = (event)=>{
if(event.cep){
if(event.cep.length === 9){
endereco(event.cep).then((result)=>{
event.address = result.logradouro;
event.state = result.uf;
event.city = result.localidade;
});
}
}
}
...
...