2017-10-05 72 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