Допустим, компонент 1 и компонент 2 имеют область действия, называемую @ AwesomeScope
Допустим, компонент 2 предоставляет банан для @ AwesomeScope
Когда создается c1, он создает потрясающую область видимости. Когда c2_a создается в зависимости от c1, он не создает потрясающую область, потому что c1 уже имеет потрясающую область. Вместо этого c2_a делится потрясающей областью, созданной c1.
Когда создается c2_b, он также разделяет потрясающую область, созданную c1 по той же причине, что и c2_a выше.
Исходя из вышесказанного, мы можем сделать вывод, что c2_b и c2_a используют одну и ту же потрясающую область видимости, созданную c1.
Когда c2_a пытается создать банан для потрясающей области, он перебирает зависимости, чтобы увидеть, что есть еще один банан в потрясающей области. c_2a видит только, что c1 имеет потрясающую область видимости. Поскольку в c1 нет банана, c_2a создает банан и сохраняет его в экземпляре c_2a, потому что c_2a определен как имеющий потрясающую область действия.
То же событие происходит при создании c2_b, потому что c2_b не имеет возможности достичь c2_a в той же потрясающей области видимости и проверить, есть ли у c2_a банан или нет. Теперь и c1_a, и c2_b имеют бананы, что означает, что в одной потрясающей области есть 2 банана. Поскольку в каждой потрясающей области должен существовать только один банан, мы можем заключить, что он нарушил область действия.