当您通过提交表单调用API请求时,如何设置Axios响应?我想从/在POST方法中发送表单,并获得API响应,然后用API响应重定向到/result页面。我的代码在下面,它引发
警告:无法对卸载的组件执行React状态更新。
这是一个no-op,但它表示应用程序中存在内存泄漏。
若要修复,请取消useEffect清理函数中的所有订阅和异步任务。在家(在app.js:21)
完成handleSubmit后,Submited存储true,但res仍然初始化为{},而不存储API响应。甚至console.log(response)也显示API的正确响应。我想做一个文本分类器WEB服务。我可能不得不使用warning所说的useEffect,但我不确定。并且不知道如何将其与表单提交一起使用。谢谢.
js prettyprint-override">function App() {
return (
<BrowserRouter>
<div>
<Switch>
<Route exact path="/">
<Home />
</Route>
<Route path="/result">
<Result />
</Route>
</Switch>
</div>
</BrowserRouter>
);
}
function Home() {
const useInput = initialValue => {
const [value, setValue] = useState(initialValue)
return {
value,
setValue,
reset: () => setValue(''),
bind: {
value,
onChange: event => {setValue(event.target.value)}
}
}
}
const [submitted, setSubmitted] = useState(false);
const {value: url, bind: bindUrl, reset: resetUrl} = useInput('')
const {value: content, bind: bindContent, reset: resetContent} = useInput('')
const [res, setRes] = useState({})
const handleSubmit = (event) => {
event.preventDefault()
axios.post('http://127.0.0.1:5000/predict', {url:url, content:content}) // My API
.then(response => {
setSubmitted(true)
console.log(response)
setRes(response) // This doesn't work
})
}
if (submitted) {
return <Redirect push to={{
pathname: '/result',
state: {response: res}
}}
/>
}
return (
<div>
<h1>Send URL and Content</h1>
<form onSubmit={handleSubmit}>
<label>
URL:
<input name="url" type="text" {...bindUrl} />
</label>
<br />
<label>
content:
<input name="content" type="text" {...bindContent} />
</label>
<br />
<input type="submit" value="Submit" />
</form>
</div>
);
}
您可以将此代码段添加到代码中
useEffect(() => {
if(Object.values(response).length) { // Here place an valid check to know if valid response is present
setSubmitted(submitted => !submitted)
}
}, [response])
并将API调用方法更改为
const handleSubmit = (event) => {
event.preventDefault()
axios.post('http://127.0.0.1:5000/predict', {url:url, content:content}) // My API
.then(response => {
setRes(response)
})
}
提前谢了。我有一个状态数组,如下所示。 我需要添加一个项目到状态数组,我发现我们不需要做状态突变。如何使用PrevState设置状态。 如何调用set State以追加此状态数组。 像这样的东西?
这两个是等价的吗?如果不是,哪一个是最好的,为什么?
问题内容: 我有以下基于渲染下拉列表呈现用户的类。如果我选择“字母”,则将按字母顺序列出用户;当我选择“组”时,将按组顺序列出用户。 在组件中,我正在通过props.members中的函数设置组件状态对象。 当我选择“组”排序时,组件正在卸载并且正在DOM中安装。同样,当我切换回“字母”排序时,在组件中预先设置的状态变量(成员)将变为NULL,因为该组件已从DOM中删除。 重新渲染b’coz时道具
我有一个类组件,它返回使用Redux存储完全填充的状态: 但是,当我将上面的类组件切换到下面的功能组件,以便可以在代码中使用ReactJS钩子时,状态始终为空。
问题内容: 如何在axios中设置获取响应的状态? 问题答案: 您在这里遇到语法错误。你应该试试这个 这里有几件事要注意: 是一个异步函数,这意味着其余代码将被执行。当服务器的响应到达时,传递给的函数将被执行。的返回值称为承诺对象。您可以在此处了解更多信息 关键字根据调用的位置而具有不同的值。in 应该 引用构造函数对象,并且在函数内部调用时,它引用该对象。这就是为什么我分配给变量的原因。您可以在
我想用React useState钩子设置多个状态值,这样我就可以用useEffect钩子分别更新它们。我有以下代码: 但是当我用React DevTools检查应用程序时,我会看到钩子的多个“状态”值,而不是“订单”、“支付”、“提交”等。