尝试在React中提交表单时不断出现此错误
Uncaught TypeError: queryList.map is not a function
这是密码:
const [query, setQuery] = useState();
const [queryList, setQueryList] = useState([]);
const [response, setResponse] = useState([]);
const [responseList, setResponseList] = useState([]);
const createQuery = () =>{
setQueryList(
{query}
);
alert(queryList)
Axios.post('http://localhost:3001/createQuery', {
query
}).then((res)=>{
setResponse(res)
setResponseList(...responseList, {res})
})
}
return(
<div>
{queryList && queryList.map((e) => {
return(
<p className="ml-52 text-white text-xl">{e.query}</p>
)
})}
<form>
<textarea onChange={(event)=>{
setQuery(event.target.value)
}}
type="text" name="name" autoComplete="off" placeholder="Ask a question" className = "caret-gray-200 bg-gray-800 shadow-md h-20 w-5/6 inset-x-0 bottom-6 absolute left-36 items-center snap-center text-xl p-6" />
<button onClick={createQuery} type="submit" name="submit" className="text-white inset-x-0 bottom-6 absolute bg-transparent w-20 h-20 ml-auto mr-28 focus:outline-none focus:none">
<AiOutlineSend size="28" />
</button>
</form>
</div>
)
提交表单后,我需要Map查询
我知道我没有提到任何其他错误,但如果你看到他们,请让我知道!
顺便说一句,所有其他职位没有为我工作。
谢谢:)
1条答案
按热度按时间ncgqoxb01#
当你设置queryList的时候,你需要用数组括号把它设置成一个数组。同样的名字,我假设你想要一个包含所有查询的数组,所以你需要包含以前已经存储在queryList中的查询。
这就是你的setter函数应该看起来的样子。除此之外,alert函数将不起作用,因为queryList没有及时更新,所以我建议你只在alert中使用query而不是queryList。另外,由于你使用表单的方式,页面将被重定向,这可以通过使用onSubmit事件和使用preventDefault()函数来解决。
我还没有测试过任何与axios,但这段代码应该工作。