ReactJSでクリックしたときにボタンを無効にする

唯一

React JSのクリック時にボタンを無効にしようとしています。その機能は、記事を配列に追加することです。ユーザーが記事を保存をクリックすると、ボタンが無効になり、再度保存できなくなります。

これまでのところ、このコンポーネントのコードは次のとおりです。

import React, { Component } from 'react';
import './news-hero.css';
import Carousel from "react-multi-carousel";
import "react-multi-carousel/lib/styles.css";

const responsive = {
    superLargeDesktop: {
        breakpoint: { max: 4000, min: 3000 },
        items: 1,
    },
    desktop: {
        breakpoint: { max: 3000, min: 1024 },
        items: 1,
    },
    tablet: {
        breakpoint: { max: 1024, min: 464 },
        items: 1,
    },
    mobile: {
        breakpoint: { max: 464, min: 0 },
        items: 1,
    },
};

class NewsHero extends Component {
    _isMounted = false;
    state = {
        loading: false,
        data: [],
        headline: [],
        saved: []
    }

    saved = headline => {
        this.setState(
            (prevState) => ({ saved: [...prevState.saved, headline] }),
            () => {
                console.log('Saved articles = ', this.state.saved);
                alert('Article saved');
                localStorage.setItem('saved', JSON.stringify(this.state.saved));
                localStorage.getItem('saved');
            });
    }

    constructor(props) {
        super(props)
        this.saved = this.saved.bind(this)
    }

    onError() {
        this.setState({
            imageUrl: "../assets/img-error.jpg"
        })
    }

    componentDidMount() {
        this._isMounted = true;
        this.setState({ loading: true, saved: localStorage.getItem('saved') ? JSON.parse(localStorage.getItem('saved')) : [] })
        fetch('https://newsapi.org/v2/everything?q=timbaland&domains=rollingstone.com,billboard.com&excludeDomains=townsquare.media&apiKey=xxxx')
            .then(headline => headline.json())
            .then(headline => this.setState({ headline: headline.articles, loading: false }, () => console.log(headline.articles)))
    }

    componentWillUnmount() {
        this._isMounted = false;
    }

    render() {
        return (
            <div className="hero">
                <h2 className="text-left">News</h2>

                {this.state.loading
                    ? "loading..."
                    : <div>
                        <Carousel
                            additionalTransfrom={0}
                            showDots={true}
                            arrows={true}
                            autoPlaySpeed={3000}
                            autoPlay={false}
                            centerMode={false}
                            className="carousel-hero"
                            containerClass="container-with-dots"
                            dotListClass="dots"
                            draggable
                            focusOnSelect={false}
                            infinite
                            itemClass="carousel-top"
                            keyBoardControl
                            minimumTouchDrag={80}
                            renderButtonGroupOutside={false}
                            renderDotsOutside
                            responsive={responsive}>
                            {this.state.headline.map((post, indx) => {
                                return (
                                    <div className="text-left mt-5" key={indx}>
                                        <img className="media-img card-img-top card-img-hero" src={post.urlToImage} alt="Alt text"></img>
                                        <div className="card-body container hero-text-body">
                                            <h1 className="card-title hero-title text-truncate">{post.title}</h1>
                                            <button className="btn-primary btn mt-2 mb-4" onClick={() => this.saved(post)}>Save article</button>
                                            <p className="card-text">{post.description}</p>
                                            <a href={post.url} target="_blank" rel="noopener noreferrer">Read More</a>
                                        </div>
                                    </div>
                                )
                            })}
                        </Carousel>
                    </div>
                }
            </div>
        )
    }
}
export default NewsHero;

他の質問は他のシナリオコードに対する特注の回答であるため、他の質問の回答は実際にはこの単純な質問に答えません。

エド・ルーカス

イベントをonClick()関数に渡すことができます

onClick={(e) => this.saved(e, post)}

次に、そのイベントを使用しcurrentTargetて、を含むHTML要素を取得し、onClickその要素を無効にすることができます。

saved = (e, headline) => {
    // Disable clicked button
    e.currentTarget.disabled = true;
    ...
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

jqueryで別のボタンがクリックされたときにボタンを無効にする

分類Dev

JQueryでクリックした後にボタンを無効にする

分類Dev

最近のボタンandroidをクリックしたときにテキスト「設定」を無効にする

分類Dev

ボタンクリックで選択したチェックボックスを無効にする

分類Dev

ng-repeatをクリックしたときにボタンを無効にするにはどうすればよいですか?

分類Dev

Androidの無効化ボタンをクリックしたときにメッセージを表示するにはどうすればよいですか?

分類Dev

WordPressでボタンをクリックした後にボタンを無効にする方法

分類Dev

AndroidのListView内にあるボタンをクリックしたときにListViewアイテムのすべてのボタンを無効にする方法

分類Dev

ボタンがクリックされたときにホバーを一時的に無効にする(jQuery)

分類Dev

PHPをクリックした後にボタンを無効にする

分類Dev

ボタンがクリックされたときにボタンを無効にするにはどうすればよいですか?

分類Dev

ボタンをクリックしてドロワーが開いたときにテキストボックスを無効にする

分類Dev

クリックされたときに残りのボタンを無効にする

分類Dev

クリックされたときに複数のボタンを無効にする方法

分類Dev

ボタンがクリックされたときにwpfwinowを無効にする

分類Dev

ボタンクリックで選択したタブを無効にするマットタブ

分類Dev

クリック時に2番目のボタンまたはその他のボタンを無効にすることはできません

分類Dev

Vue.jsでワンクリックした後にボタンを無効にする

分類Dev

別のボタンをクリックして無効化されたボタンを有効にする

分類Dev

ボタンをクリックできません-クリックを無効にします

分類Dev

ボタンがすでにクリックされているときにボタンを無効にするには、その行によってどのようにしたらよいですか?

分類Dev

JQueryを使用してチェックボックスボタンをクリックしたときにボタンを有効または無効にする方法

分類Dev

ブラウザの戻るボタンをクリックしたときにセッションを無効にしてアクセスをブロックするにはどうすればよいですか?

分類Dev

ブラウザの戻るボタンをクリックしたときにセッションを無効にしてアクセスをブロックするにはどうすればよいですか?

分類Dev

テーブルをクリックしたときに無効にされたボタン

分類Dev

MSボットフレームワークをクリックしたらボタンを無効にする

分類Dev

ハンバーガーボタンがクリックされたときにオーバーレイし、同じボタンで無効にします

分類Dev

Jqueryの切り替えボタンで選択した状態のクリックを無効にする

分類Dev

そのdiv内のボタンをクリックしたときにdivのmatRippleを無効にする方法は?

Related 関連記事

  1. 1

    jqueryで別のボタンがクリックされたときにボタンを無効にする

  2. 2

    JQueryでクリックした後にボタンを無効にする

  3. 3

    最近のボタンandroidをクリックしたときにテキスト「設定」を無効にする

  4. 4

    ボタンクリックで選択したチェックボックスを無効にする

  5. 5

    ng-repeatをクリックしたときにボタンを無効にするにはどうすればよいですか?

  6. 6

    Androidの無効化ボタンをクリックしたときにメッセージを表示するにはどうすればよいですか?

  7. 7

    WordPressでボタンをクリックした後にボタンを無効にする方法

  8. 8

    AndroidのListView内にあるボタンをクリックしたときにListViewアイテムのすべてのボタンを無効にする方法

  9. 9

    ボタンがクリックされたときにホバーを一時的に無効にする(jQuery)

  10. 10

    PHPをクリックした後にボタンを無効にする

  11. 11

    ボタンがクリックされたときにボタンを無効にするにはどうすればよいですか?

  12. 12

    ボタンをクリックしてドロワーが開いたときにテキストボックスを無効にする

  13. 13

    クリックされたときに残りのボタンを無効にする

  14. 14

    クリックされたときに複数のボタンを無効にする方法

  15. 15

    ボタンがクリックされたときにwpfwinowを無効にする

  16. 16

    ボタンクリックで選択したタブを無効にするマットタブ

  17. 17

    クリック時に2番目のボタンまたはその他のボタンを無効にすることはできません

  18. 18

    Vue.jsでワンクリックした後にボタンを無効にする

  19. 19

    別のボタンをクリックして無効化されたボタンを有効にする

  20. 20

    ボタンをクリックできません-クリックを無効にします

  21. 21

    ボタンがすでにクリックされているときにボタンを無効にするには、その行によってどのようにしたらよいですか?

  22. 22

    JQueryを使用してチェックボックスボタンをクリックしたときにボタンを有効または無効にする方法

  23. 23

    ブラウザの戻るボタンをクリックしたときにセッションを無効にしてアクセスをブロックするにはどうすればよいですか?

  24. 24

    ブラウザの戻るボタンをクリックしたときにセッションを無効にしてアクセスをブロックするにはどうすればよいですか?

  25. 25

    テーブルをクリックしたときに無効にされたボタン

  26. 26

    MSボットフレームワークをクリックしたらボタンを無効にする

  27. 27

    ハンバーガーボタンがクリックされたときにオーバーレイし、同じボタンで無効にします

  28. 28

    Jqueryの切り替えボタンで選択した状態のクリックを無効にする

  29. 29

    そのdiv内のボタンをクリックしたときにdivのmatRippleを無効にする方法は?

ホットタグ

アーカイブ