2017-10-05 53 views
0

在我反應過來組件我試圖觸發在下面的函數創建超鏈接點擊:如何觸發超級鏈接點擊什 - 反應成分

getUsers(e){ 
    e.preventDefault(); 
    const { userIds } = this.props; 
    BatchRoleActions.getAllRoleUsers(userIds) 
    .then((users) => { 
     const link = document.createElement('a'); 
     link.setAttribute('id', 'csvLink'); 
     link.setAttribute('download', 'roles.csv'); 
     link.setAttribute('href', users); 
     document.getElementById('csvLink').onClick(); 
    }); 

    } 

當運行該功能時,我得到了以下錯誤: 未捕獲(承諾中)TypeError:無法讀取屬性'onClick'爲空

如何觸發點擊開始我的下載?

BatchRoleActions.getAllRoleUsers(userIds)返回一個數組,其中包含用於導出到csv文件的數據。 encodeURI(data:text/csv;charset=utf-8,\uFEFF${data});

我試圖找到一個解決方案:ReactJs - How to complete onClick before download - href

+0

你拼寫的下載'OnClick'錯大寫的O,但我們需要更多的信息來幫助你 –

+0

你還沒有它插入到DOM。不管怎樣,不要將本機DOM方法與React混合使用... – Li357

+0

最好的方法是什麼? – user1526912

回答

1

EDIT1:我誤解了任擇議定書要求,現在編輯我的答案!
編輯2:更多的編輯後,閱讀OP的鏈接

我已經建立了一個沙箱模擬你想要做的;看看在這裏 - https://codesandbox.io/s/18k6oppy2l

,請注意Users.js文件

  1. 我們會把可見button,並在DOM

  2. 一種無形的<a>標籤當用戶點擊Download User data按鈕,取回users的請求被製作成

  3. 一旦請求解析爲用戶的數據的字符串表示,我們稱之爲setState來設置用戶的狀態

  4. setState回調,我們再編程「點擊」無形<a>標籤下載users.csv;這將觸發文件

+0

我正在嘗試將數據導出到csv文件。 atchRoleActions.getAllRoleUsers(userIds)返回一個數組,其中包含用於導出到csv文件的數據。是encodeURI(數據:文本/ CSV;字符集= UTF-8,\ uFEFF $ {數據}); – user1526912

+0

我的不好,誤解了你的要求。我已經編輯了我的答案,請看看它! –

+0

我不希望獲取渲染用戶數據。我希望用一個buttton的onClick數據填充我的href,然後調用getUsers函數並開始下載。請參閱原始問題 – user1526912