簡體   English   中英

文件上傳按鈕使整個組件可點擊

[英]File upload button is making whole component clickable

我正在嘗試為 React 中的表單構建一個簡單的文件上傳輸入。 我想要一個用戶按下以觸發文件上傳輸入的自定義按鈕。 似乎這樣做的方法是將 useRef 附加到輸入,然后使用單擊事件來觸發文件輸入。 所有這一切都有效,除非我這樣做會使整個組件可點擊。 我所做的所有搜索都產生了相反的答案,即解釋如何使整個組件可點擊。 我不想要這種行為,我不知道為什么會這樣。

const fileInputField = useRef(null);

const handleClick = () => {
    fileInputField.current.click();
  };

    
<div className="file-upload-box">
                
                <p>Drag a file here or</p>

                <button onClick={handleClick}>
                  BROWSE
                </button>
    
           
                <input
                  style={{ display: "none" }}
                  type="file"
                  title=""
                  value=""
                  ref={fileInputField}
                  
                />
</div>

在 javascript 中,任何事件都會被觸發並冒泡到其父元素,直到到達根元素。

您需要從按鈕停止事件傳播。

const handleClick = (e) => {
    e.stopPropagation();
    fileInputField.current.click();
};

或者,如果事件的target元素是瀏覽按鈕,則可以在組件單擊事件中檢查return單擊 function 而不執行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM