typescript 如何使用Axios响应填充MUI自动完成文本字段?

gab6jxml  于 2023-03-19  发布在  TypeScript
关注(0)|答案(1)|浏览(103)

我做了一个表单,这样你就可以注册你的宠物,在文本字段(宠物类型)有一个MUI自动完成组件。我的问题是...有没有可能,当编辑这个宠物,MUI自动完成组件已经包含了数据库中的信息?我试过这个,它不工作。

//auto complete information... is working fine
const [tipos, setTipos] = useState<ITipo[]>([])

useEffect(() => {
        axios.get<ITipo[]>(`http://localhost:8080/api/v1/tipo`)
            .then(resposta => setTipos(resposta.data))

    }, [])

//this part is not working, tring to fill the TextField when editing
const [tipo, setTipo] = useState<any | null>('')

useEffect(() => {
        if (parametros.id) {
            axios.get<IAnimal>(`http://localhost:8080/api/v1/pet/${parametros.id}/`)
                .then(resposta => setTipo(resposta.data.tipo.nome))

    }, [parametros])

<Autocomplete
                onChange={(event, value) => setTipo(value)}
                disablePortal
                id="tiposAutoComplete"
                options={tiposAutoComplete}
                sx={{ width: 300, marginTop: 1 }}
                renderInput={(params) => 
                  <TextField
                    {...params}
                    value={tipo}
                    id="especieField"
                    label="Tipos"
                    variant="standard"
                    required />}
            />
rfbsl7qr

rfbsl7qr1#

我明白了,MUI自动完成组件是一个react组件,它包含一个输入,所以我所要做的就是访问它里面的输入,这在documentation的“受控状态”主题下有解释。
下面是代码的外观:

<Autocomplete
            isOptionEqualToValue={(option, value) => option.valueOf === value.valueOf}
            value={tipo}
            onChange={(event, value) => setTipo(value as string)}
            inputValue={tipo}
            onInputChange={(event, newInputValue) => {
                setTipo(newInputValue);
            }}
            disablePortal
            id="tiposAutoComplete"
            options={tiposAutoComplete}
            sx={{ width: 280, marginTop: 1 }}
            renderInput={(params) => <TextField
                {...params}
                id="especieField"
                label="Tipos"
                variant="standard"
            />}
        />

相关问题