javascript - React - 使用 .map() 时处理空数组
问题描述
我在 react 和 javaScript 方面几乎没有经验,并且难以呈现最初为空的列表 该列表应该是一个搜索结果列表,将在单击搜索后呈现给用户,但该列表没有显示,因为它是空的并且获取搜索结果后不显示。
export default function PesquisarDisc() {
const [disciplinas, setDisciplinas] = useState([]);
const [resPesquisa, setResPesquisa] = useState([]);
const user = useSelector((state) => state.user.profile);
async function carregarDisciplinas() {
const response = await api.get('disciplinas');
return response.data;
}
function handleSubmit({ anoLetivo1, curso1, unidadeCurricular1 }) {
carregarDisciplinas().then((value) => {
setDisciplinas(value);
});
disciplinas.forEach((disciplina) => {
if (
disciplina.professor_id === user.id &&
disciplina.anoLetivo === anoLetivo1 &&
disciplina.curso === curso1 &&
disciplina.nome === unidadeCurricular1
) {
setResPesquisa(disciplina);
}
});
}
return (
<Container>
<div className="title">Pesquisar disciplinas</div>
<Form onSubmit={handleSubmit}>
<span>Ano Letivo:</span>
<Input
name="anoLetivo1"
type="text"
placeholder="Introduza o ano letivo"
/>
<span>Unidade Curricular:</span>
<Input
name="unidadeCurricular1"
type="text"
placeholder="Introduza a unidade curricular"
/>
<span>Curso:</span>
<Input name="curso1" type="text" placeholder="Introduza o curso" />
<hr />
<button type="submit">Pesquisar</button>
</Form>
<List>
{resPesquisa.map((resultado) => (
<li key={resultado.nome}>
<span>{resultado.nome}</span>
<a href="/">Lançar sumário</a>
</li>
))}
</List>
</Container>
);
}
解决方案
将循环移动到then
范围,否则没有用最新值定义学科(你在结果解析之前循环),也使用value
而不是学科,或者使用回调setDisciplinas
function handleSubmit({ anoLetivo1, curso1, unidadeCurricular1 }) {
carregarDisciplinas().then((value) => {
setDisciplinas(value);
setResPesquisa(value.filter((disciplina) => disciplina.professor_id === user.id && disciplina.anoLetivo === anoLetivo1 &&
disciplina.curso === curso1 &&
disciplina.nome === unidadeCurricular1
));
});
}
编辑:看看我注意到你的 resPesquisa 被用作数组的评论,所以也许过滤它会更好
推荐阅读
- cuda - 错误:类“cooperative_groups::__v1::thread_block”没有成员“is_valid”
- ubuntu - 如何在 Ubuntu 14 中仅获取文件的 sha512sum?
- c# - 使用列表而不是数组的问题
- react-native - 如何在底部选项卡导航器中隐藏标签反应导航 v5
- javascript - 如果资产加载失败,则测试失败
- ios - 如何导入 cookieMaster(或任何已安装的外部节点包)?
- python - 将浮点列表列表转换为一个列表
- google-cloud-platform - MLflow 将工件存储在 GCP 存储桶上,但无法读取它们
- python - 如何在复杂的层次结构中进行子类化?
- angular - REST 适用于获取所有用户,但无法让一位用户说请求的资源上不存在“Access-Control-Allow-Origin”标头