axios React组件不显示来自动态状态的下拉建议

ssm49v7z  于 5个月前  发布在  iOS
关注(0)|答案(1)|浏览(58)

我正在开发一个名为CadastrologisticenteBiopsia的React组件,用于注册患者和活检。该组件有一个功能,当用户在文本输入字段中输入时,它会动态搜索专业人士。虽然搜索功能正常工作(状态会根据获取的数据和日志正确更新),但不会显示建议。
下面是我的组件的相关部分:

import React, { useState, useEffect } from 'react'
import axios from 'axios';
import './formulario_design.css'

function CadastroPacienteBiopsia({ onFormSubmit }) {
    // ... (state and other functions)

    const [profissionais, setProfissionais] = useState([]);
    const [textoBusca, setTextoBusca] = useState('');

    useEffect(() => {
        const buscarProfissionais = async () => {
            if (textoBusca.length > 2) {
                try {
                    const resposta = await axios.get(`http://localhost:5000/api/profissionais/nome/${textoBusca}`);
                    setProfissionais(resposta.data);
                } catch (erro) {
                    console.error('Erro ao buscar profissionais', erro);
                }
            }
        };

        const timerId = setTimeout(buscarProfissionais, 500); // Debounce
        return () => clearTimeout(timerId);
    }, [textoBusca]);

    // ... (other parts of the component)

    return (
        <div className="formulario-cadastro">
            {/* Other form fields */}
            <input
                type="text"
                name="profissional_nome"
                placeholder="Digite o nome de um profissional existente"
                value={dadosPaciente.profissional_nome}
                onChange={(e) => {
                    handleInputChange(e);
                    setTextoBusca(e.target.value);
                }}
                list="profissionais-list"
            />
            <datalist id="profissionais-list">
                {profissionais.map((profissional, index) => (
                    <option key={index} value={profissional.nome} />
                ))}
            </datalist>
            {/* Other form fields */}
        </div>
    );
}

export default CadastroPacienteBiopsia;

字符串
在profissionais-list字段中输入时,状态profissionais按预期更新,并且控制台日志确认获取的数据。但是,与此输入字段绑定的数据列表(id为“profissionais-list”的数据列表)不会显示基于获取的数据的建议。
如何让用户在“Digite o nome de um profissional existente”字段中键入时显示建议?
为了解决我的React组件CadastrologisticenteBiopsia的一个问题,我实现了一个功能,当用户在文本字段中输入时,可以在列表中动态显示专业建议。尽管通过控制台日志确认了成功的数据获取和状态更新,但通过datalist标签链接的列表,并没有显示这些建议。我使用useState来管理状态,使用useEffect来触发专业搜索,并增加了一个去抖动功能以提高效率。核心挑战仍然是:则该数据不反映动态加载的数据。

lqfhib0f

lqfhib0f1#

datalist是你做的自定义组件吗?

如果是

请分享代码

如果没有

尝试使用ulli元素列出项目,如下所示:

{profissionais.length > 0 && (
    <ul className="suggestions-list">
      {profissionais.map((profissional, index) => (
        <li key={index}>
          {profissional.nome}
        </li>
      ))}
    </ul>
  )}

字符串

相关问题