javascript - 如何防止ReactJS中的双击

标签 javascript reactjs ecmascript-6

我正在ReactJS中进行搜索过滤器工作,但遇到了问题。问题是当用户进行一些搜索并想要单击“下一步”(因为我在应用程序中有分页)时,用户将单击两次以加载其他页面的数据。

我需要避免这种行为:我的意思是,当用户单击下一步时,它应该是“加载数据”而不是“双击”。

我是ReactJS新手,请专家帮助我

代码

    btnClick() {
        const { Item,skip , filtered, data } = this.state
        if(filtered.length>0 || !data.length ){
          window.alert("Hello,")
          this.setState({
            filtered:[],
            skip:0
          },()=>this.getData());
          return false
        }else {
          window.alert("Hello , Dear")
        this.setState(
          {
            Item,
            skip: skip + pageSize
          },
          () => this.getData()
        );}

      }

最佳答案

您可以设置 isLoading 状态,并在处于此状态时在 button 上设置 disabled 属性,这将不允许按钮被加载在获取数据时再次单击。

 btnClick() {
   const {
     Item,
     skip,
     filtered,
     data
   } = this.state;
   
   if (filtered.length > 0 || !data.length) {
     window.alert("Hello,")
     this.setState({
       filtered: [],
       skip: 0
     }, () => this.fetchData());
     return false
     
   } else {
     window.alert("Hello , Dear")
     this.setState({
         Item,
         skip: skip + pageSize
       },
       () => this.fetchData()
     );
   }
 }
 
 fetchData() = async() => {
     this.setState({ isLoading: true });
     
     await this.getData();
     
     this.setState({ isLoading: false });
 }
 
 render() {
        const {
      isLoading
    } = this.state;
    
    const buttonProps = isLoading ? { disabled: true} ? {};
    
    return (
      <button onClick={this.btnClick} { ...buttonProps }>
            Click to fetch
      </button>
    );
 }

关于javascript - 如何防止ReactJS中的双击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55579068/

相关文章:

javascript - chop 文本而不点击嵌套链接

javascript - 遍历数组以检查模式

javascript - 使用 html 字符串中的 id 获取名称的正则表达式

javascript - 尝试添加链接以打开指向随机单词数组的 'steam://run/' 链接

asp.net-mvc - 发布应用程序时的 .Net Core React SPA 路由问题

reactjs - 在 React 中插入 unicode 字符

reactjs - 如何修复 React 路由

javascript - React Native 风格复选框和文本分隔

javascript - ES6 父类覆盖子原型(prototype)

javascript - 使用 redux 创建秒表