Anything static that does not change at runtime is probably best kept in a datatable. This is the fastest way to access large quantities of information relating to a key value (row name). You could also look into using ‘Get Class Defaults’ on a master class and any variables marked as instance editable will be able to be changed in children defaults. I’d still suggest using a datatable, though.
Are you making a loot component because the loot is not immediately given to the inventory? What is the reason for separation? Could you not just add something to the inventory as soon as you pick it up?
For reference in a normal inventory you should only need to pass around a row name and quantity of that item. If the item needs real time data its probably better to have an actor actually control its functionality. The example I could give is a gun that has a certain amount of rounds loaded in it like Resident Evil 4 inventory. You do not need to pass around all the static information of that weapon but trying to keep track of the loaded rounds would require work. My best solution to this is having an actor that keeps track of relevant information the UI can grab through an interface or something of the sort. An inventory system is largely trivial and specific to your project’s use cases.