Hey, I have the following 4 components:
Layout
- Menu
- Categories
- Question
Now you visit f.e. /question/1234
. In my case, the Layout
container get’s the url parameter, set it as state questionId
and passes it down to the Question
component. The Question
component then subscribes to the Mongo data. After the subscription is ready, I need to tell the the Categories
component, which category the question has to set the category link to active.
How would you handle this data flow? At the moment, I’m doing this in my Question
container:
componentDidMount() {
this.autorun(() => {
if(this.subscriptionsReady()) {
var question = Question.findOne({urlTitle:this.props.questionId});
this.setState({
ready: true,
question: question,
});
//Passes the category up to Layout to change Layout's state - the Categories component then get's the value as prop from Layout's state
this.props.setCategory(question.categoryId);
}
});
}
This works, but I don’t know if this is the correct way to handle this issue? Normally people say I need to respect React’s top-down architecture, but this would mean that I have to subscribe to all data in my Layout
component, passing it down to the childs - but that also doesn’t feel right.