If you think and argue over component based programming, you'll realize that this concept advise to make code work as independent possible. Therefore, you create a components, and to make it independent you have to design it in a way that, it accepts arguments (properties, params) as input and gives you output (it may or may not hold any business logic).
Having said that, avoid coupling components together. Design it in a way that parent component maintains the state and pass props to dumb/child components.