I would never tie up a button component with the downloading of just one particular file. Make your button component accept an external function from the parent through something like a handleClick prop, so it's the parent (or the appropriate smart container up the tree) to be the one launching the window, maybe accessing analytics tracking of the event, etc ..
I have a secondary button component that can told what to do when the user interacts with it, so I can configure it as a link to a new tab, an internal route link, or triggering a function .. /**
* @example
* <SecondaryBtn icon='icon_view' text='VIEW' href='192.168.0.1' />
* <SecondaryBtn icon='icon_view' text='LINK' linkto='/admin' />
* <SecondaryBtn icon='icon_view' text='FUNC' handleClick={this.parentFunction}} />
*/