首页 > 解决方案 > 派发动作后直接更改状态

问题描述

我正在开发一个简单的测验应用程序,并希望调度一个操作(称为FreeResponseSubmit)以将用户的输入(称为searchField)存储到答案对象中,然后重置表单字段。我试图链接承诺,虽然答案对象是用用户的输入更新的,但第二个“then”没有按计划工作(我假设前一个承诺的响应不可用),并且 searchField值永远不会重置。

承诺甚至是正确的方式还是 async/await 是更好的路线?一段时间以来,我一直在绞尽脑汁试图弄清楚这一点(对这些框架来说仍然是新手),因此非常感谢任何帮助。

免费响应组件:

handleClick(){
  const searchFieldPromise= new Promise((resolve, reject)=>{
      resolve(this.state.searchField);
  });
  searchFieldPromise.then((searchField)=>this.props.freeResponseSubmit(searchField))
  .then((value)=>this.setState({searchField:""}));
}

标签: reactjsredux

解决方案


handleClick方法中的逻辑实际上可以简化为:

const { searchField } = this.state;
const { freeResponseSubmit } = this.props;
freeResponseSubmit(searchField);
this.setState({
  searchField:''
});

这是因为 for 的操作freeResponseSubmit已经从您的组件状态中获取了值,因此在 redux 中执行任何后续操作。因此,您只需清除组件的状态即可。


推荐阅读