首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在onSubmit调用的函数中使用状态?

如何在onSubmit调用的函数中使用状态?
EN

Stack Overflow用户
提问于 2019-01-02 17:47:10
回答 2查看 495关注 0票数 0

我在redux- Form的Form组件的onSubmit调用的函数中使用状态时遇到了问题。

我需要访问给定的状态、标签和currentTab。第一个是选项卡数组,第二个是用户当前所在选项卡的指示器。

我尝试过使用click事件来处理提交,一切都很正常。

将state作为参数传递不起作用。例如

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<Form onSubmit={() => submit(currentTab, tabs.length)}>
  ...
</Form>

它仍然使用默认状态0。

我也尝试过使用提供给装饰组件的handleSubmit属性,但没有成功。

问题是,当提交事件发生时,函数内部的状态与实际状态不是最新的。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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进行比较,以了解用户是否在最后一个选项卡中,从而根据结果触发不同的操作。

EN

回答 2

Stack Overflow用户

发布于 2019-01-02 17:53:10

如果在呈现Form时状态为true,则可以对onSubmit处理程序执行curry操作,并将状态传递给该处理程序。

我在想:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<Form onSubmit={handleSubmit(tabs, currentTab)}>
  ...
</Form>

和:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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

票数 1
EN

Stack Overflow用户

发布于 2019-01-02 18:29:27

您需要将制表符作为参数传递给您的提交函数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54010875

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文