Como Yuki já mencionou, certifique-se de usar a onChange
função corretamente. Ele recebe dois parâmetros. De acordo com a documentação:
Assinatura : function(event: object, value: any) => void
.
event
: A fonte de eventos do retorno de chamada
value
: null (o valor / valores no componente Preenchimento automático).
Aqui está um exemplo:
import React from 'react';
import Chip from '@material-ui/core/Chip';
import Autocomplete from '@material-ui/lab/Autocomplete';
import TextField from '@material-ui/core/TextField';
export default class Tags extends React.Component {
constructor(props) {
super(props);
this.state = {
tags: []
};
this.onTagsChange = this.onTagsChange.bind(this);
}
onTagsChange = (event, values) => {
this.setState({
tags: values
}, () => {
// This will output an array of objects
// given by Autocompelte options property.
console.log(this.state.tags);
});
}
render() {
return (
<div style={{ width: 500 }}>
<Autocomplete
multiple
options={top100Films}
getOptionLabel={option => option.title}
defaultValue={[top100Films[13]]}
onChange={this.onTagsChange}
renderInput={params => (
<TextField
{...params}
variant="standard"
label="Multiple values"
placeholder="Favorites"
margin="normal"
fullWidth
/>
)}
/>
</div>
);
}
}
const top100Films = [
{ title: 'The Shawshank Redemption', year: 1994 },
{ title: 'The Godfather', year: 1972 },
{ title: 'The Godfather: Part II', year: 1974 },
{ title: 'The Dark Knight', year: 2008 },
{ title: '12 Angry Men', year: 1957 },
{ title: "Schindler's List", year: 1993 },
{ title: 'Pulp Fiction', year: 1994 },
{ title: 'The Lord of the Rings: The Return of the King', year: 2003 },
{ title: 'The Good, the Bad and the Ugly', year: 1966 },
{ title: 'Fight Club', year: 1999 },
{ title: 'The Lord of the Rings: The Fellowship of the Ring', year: 2001 },
{ title: 'Star Wars: Episode V - The Empire Strikes Back', year: 1980 },
{ title: 'Forrest Gump', year: 1994 },
{ title: 'Inception', year: 2010 },
];
Tem certeza de que usou
onChange
corretamente?onChange
assinatura :function(event: object, value: any) => void
fonte
@Dworo
Para qualquer pessoa que tenha um problema com a exibição de um item selecionado na lista suspensa no campo Entrada.
Encontrei uma solução alternativa. Basicamente, você precisa vincular um
inputValue
atonChage
para ambosAutocomplete
eTextField
, merda UI de material.fonte
Ao usar o código acima, ainda não consigo obter a caixa de preenchimento automático para exibir a opção selecionada. Alguma idéia pessoal?
fonte
Eu precisava acertar minha API em todas as alterações de entrada para obter minhas tags de back-end!
Use Material-ui onInputChange se você deseja obter as tags sugeridas em cada alteração de entrada!
fonte
Eu queria atualizar meu estado ao selecionar uma opção no preenchimento automático. Eu tinha um manipulador onChange global que gerencia todas as entradas
Isso atualiza o objeto dinamicamente com base no nome do campo. Mas, no preenchimento automático, o nome retorna em branco. Então, mudei o manipulador de
onChange
paraonSelect
. Em seguida, crie uma função separada para lidar com a alteração ou, como no meu caso, adicione uma instrução if para verificar se o nome não foi passado.A abordagem acima funciona se você tiver um único preenchimento automático. Se você tem múltiplos u pode passar uma função personalizada como abaixo
fonte