Handle change on Autocomplete Component from material ui

前端 未结 5 866
無奈伤痛
無奈伤痛 2021-02-01 17:36

I want to use Autocomplete component for input tags. I\'m trying to get the tags and save them on a state so I can later save them on the database. I\'m using funct

5条回答
  •  深忆病人
    2021-02-01 18:08

    As Yuki already mentioned, make sure you did use the onChange function properly. It receives two parameters. According to the documentation:

    Signature: function(event: object, value: any) => void.

    event: The event source of the callback

    value: null (The value/values within the Autocomplete component).

    Here's an example:

    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 (
          
    option.title} defaultValue={[top100Films[13]]} onChange={this.onTagsChange} renderInput={params => ( )} />
    ); } } 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 }, ];

提交回复
热议问题