【发布时间】:2021-12-14 09:11:39
【问题描述】:
请问如何让用户从 github REST api 进入自动完成?我正在尝试将来自 github rest api 的信息输入到输入框中,然后创建一个自动完成输入框,但不知何故它不起作用,它不会将信息输入输入框,也不会正确生成自动完成。
分享我的源代码,看起来是这样的
import React, { useEffect, useState } from 'react';
import axios from 'axios';
import './Home.css'
const SearchRepo = () => {
const [users, setUsers] = useState([]);
const [text, setText] = useState('');
const [suggestions, setSuggestions] = useState([]);
useEffect(()=>{
const loadUsers = async()=>{
const response = await axios.get(`https://api.github.com/users/${users}`);
setUsers(response.data);
}
loadUsers();
},[])
const onSuggestHandler = (text)=>{
setText(text);
setSuggestions([]);
}
const onChangeHandler = (text) =>{
//setSeachUser(e.target.value);
let matches = []
if(text.length > 0){
matches = users.filter(user =>{
const regex = new RegExp(`${text}`,"gi");
return user.login.match(regex);
})
}
setSuggestions(matches);
setText(text);
}
return (
<div align="center">
<table border="0" width="100%" height="212px">
<tr>
<td bgcolor="#C0C0C0" height="55px"> <b>
<font face="Berlin Sans FB" color="#333333">Github Repo Search</font></b></td>
</tr>
<tr>
<td> </td>
</tr>
<tr>
<td>
<div align="center">
<table border="0" width="100%" className="SearchTable">
<div align="center">
<input type="text" placeholder=" Enter github repo ID / username" name="T1" size="88" value={text} onBlur={()=>{setTimeout(()=>{setSuggestions([])},100)}} onChange={e =>onChangeHandler(e.target.value)} className="inputArea" />
{suggestions && suggestions.map((suggestion,i)=>
<div key={i} className="suggestion" onClick={()=>onSuggestHandler(suggestion.login)}>{suggestion.login}</div>
)}
</div>
</table>
</div>
<div align="center">
<table border="0" width="100%" className="reposresultsTable">
<div align="left">
<tr>
<td bgcolor="#FFFFFF"> <b>
<font face="Verdana" size="2" className="labeltxt"><h3> Repos</h3></font></b>
</td>
</tr>
</div>
<div align="left">
<tr>
<td height="23"> <b>
<font face="Verdana" size="2">
<a href="https://test-restapi2.herokuapp.com/employees/">
mmmmmmmm</a></font></b></td>
</tr>
</div>
</table>
</div>
</td>
</tr>
</table>
</div>
);
}
export default SearchRepo;
只需要它来获取用户并放入自动完成的输入框
【问题讨论】:
-
抱歉,您的问题很难理解。
-
好的,我有一个输入框,我把它做成了一个像谷歌自动完成这样的自动完成,你输入一些东西,它会给出像谷歌搜索这样的建议现在它应该从 REST api 获取用户,在这种情况下, api 来自 github,它通过 axios 获取并填充来自输入 框 @hellogoodnight 的建议,你现在明白了吗?