我在redux- Form的Form组件的onSubmit调用的函数中使用状态时遇到了问题。
我需要访问给定的状态、标签和currentTab。第一个是选项卡数组,第二个是用户当前所在选项卡的指示器。
我尝试过使用click事件来处理提交,一切都很正常。
将state作为参数传递不起作用。例如
<Form onSubmit={() => submit(currentTab, tabs.length)}>
...
</Form>
它仍然使用默认状态0。
我也尝试过使用提供给装饰组件的handleSubmit属性,但没有成功。
问题是,当提交事件发生时,函数内部的状态与实际状态不是最新的。
const [tabs, setTabs] = useState([])
const [currentTab, setCurrentTab] = useState(0)
console.log('outside', tabs.length); // outside 2
const submit = () => {
console.log('inside', tabs.length); /* inside 0 <- still the
default value provided to useState */
if (tabs.length == currentTab + 1) {
props.onSubmit();
} else {
handleNextTab();
}
};
<Form onSubmit={submit}>
...
</Form>
由于选项卡是动态的,并且长度可以变化,因此我希望能够将tabs.length与currentTab进行比较,以了解用户是否在最后一个选项卡中,从而根据结果触发不同的操作。
发布于 2019-01-02 17:53:10
如果在呈现Form
时状态为true,则可以对onSubmit
处理程序执行curry操作,并将状态传递给该处理程序。
我在想:
<Form onSubmit={handleSubmit(tabs, currentTab)}>
...
</Form>
和:
const handleSubmit = (tabs, currentTab) => {
return () => {
// Do something with `tabs`, and `currentTab` here
};
};
另请参阅(相关):https://reactjs.org/docs/hooks-faq.html#how-to-read-an-often-changing-value-from-usecallback
发布于 2019-01-02 18:29:27
您需要将制表符作为参数传递给您的提交函数。
https://stackoverflow.com/questions/54010875
复制相似问题