小编Eri*_*sen的帖子

React 在表单提交时使用 axios.post 挂钩“useState()”更新程序函数

这是我的问题:我正在使用带有较新useState钩子的反应钩子功能组件。该useState钩子返回一个用于更新该状态的更新程序函数。更新程序功能是我遇到的问题,这是 React 如何工作的常识。在dom重新渲染之前,状态不会更新。但我需要onSubmit通过axios(或fetch)发送表单数据。

const App = () => {
    const [username, setUsername] = useState('')

    const handleSubmit = (e) => {
        e.preventDefault()
        setUsername(e.target.elements.form1.value)
        axios.post('http://localhost:3000/api', { name: username })
    }

    return (
        <div>
            <form onSubmit={handleSubmit}>
                <input type="text" name="form1" placeholder="Enter name:" />
                <button type="submit">Submit</button>
            </form>
        </div >
    )
}
Run Code Online (Sandbox Code Playgroud)

在此代码中,当表单与onSubmit表单标记上的事件一起提交时,将handleSubmit()调用该函数。在这里,setUsername()更新程序函数将更新状态并axios运行对后端服务器的后期调用。但是axios.post将始终只发送先前的状态值,因为该setUsername()函数在dom重新呈现之前不会完成。所以进入后端的数据总是落后一步。

正确执行此操作的最佳方法是什么?对于我的表单输入,我真的不需要将它们呈现给dom,我只需要将表单信息传递给后端。我什至不应该把这些数据放在状态中吗?如果是这样,用大表格做到这一点的最佳方法是什么?说 10 个输入值?

我还看到人们在输入表单中使用 value={some …

javascript reactjs axios react-hooks

1
推荐指数
1
解决办法
2736
查看次数

标签 统计

axios ×1

javascript ×1

react-hooks ×1

reactjs ×1