reactjs - 派发动作后直接更改状态
问题描述
我正在开发一个简单的测验应用程序,并希望调度一个操作(称为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:""}));
}
解决方案
该handleClick
方法中的逻辑实际上可以简化为:
const { searchField } = this.state;
const { freeResponseSubmit } = this.props;
freeResponseSubmit(searchField);
this.setState({
searchField:''
});
这是因为 for 的操作freeResponseSubmit
已经从您的组件状态中获取了值,因此在 redux 中执行任何后续操作。因此,您只需清除组件的状态即可。
推荐阅读
- mysql - 设计数据库模式以支持 MYSQL 中的多租户
- c# - 获取鼠标的运动方向
- javascript - 跨整个项目的存根请求
- laravel - 对于本地项目,我应该依赖“php artisan serve”吗?
- xamarin - 目的是什么
在 Xamarin Forms 应用程序中? - c++ - Boost ASIO 和 co_await - 与任何第三方回调一起使用?
- swift - 无效更新:section 0中的无效行数,更新后现有section中包含的行数
- wordpress - 在 WooCommerce 感谢页面上使用 update_meta_data
- javascript - 如何检测用户何时在输入类型号中键入字符串?
- docker - 为什么我们需要自定义桥接器来使用名称与其他 Dockers 容器通信?为什么默认的网桥不能做到这一点?