点击按钮请求ajax,如果成功则按钮不能再点击并变灰色。这样做是为了防止重复点击,在react中该怎么写呢?
在state保存一个属性,比如叫做disabled,默认为false
在发送ajax之前,把disabled用setState设为true
ajax返回结果,如果没有成功,那么再用setState把disabled设为false
回答用react redux的情况,其实一样的,注意的几点:
上面提到的disabled,肯定是一个内部的状态,不建议用redux来储存,直接在组件内用state来储存比较合理
redux的话,你需要redux-thunk middleware来做异步的action creator,具体看文档
在调用action之前,用setState设为true,然后在this.props.loadData().then((data)=>{ // 这里通过判断data,设为false }).catch(()=>{ // 出错,设为false })
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
上个快写的代码示例,用的是fetch API。另外写了一个用setTimeout模拟的方法:
图例如下:
代码如下: