У меня есть компонент React, в который я добавляю некоторые значения MobX. Он содержит глубоко вложенное дерево детей. Вместо того, чтобы вставлять все значения, которые нужны всем дочерним элементам, в родительский компонент и передавать их по всему дереву, я также внедряю некоторые данные непосредственно в отдельные дочерние компоненты.
Это прекрасно работает, но что если я хочу, чтобы два экземпляра этого дерева в моем приложении использовали разные данные? Я могу внедрить разные данные в два экземпляра верхнего компонента, но как мне отличить дочерние компоненты, которым также нужны разные данные?
Например, если я использую компонент A в двух местах, я могу ввести в них два разных значения для x. Но если A содержит компонент C в качестве потомка, как я могу ввести в них два разных значения для y (кроме введения их в каждый A и передачи их по дереву)?
------ root --------
/ \
A <-- inject foo.x A <-- inject bar.x
/ \
B B
/ \
C <-- inject foo.y C <-- inject bar.y
Я использую метод инъекции «Customizing inject», поэтому мои компоненты принимают отдельные значения, а не одно хранилище.
const UserNameDisplayer = inject(
stores => ({
name: stores.userStore.name
})
)(NameDisplayer)
Не уверен, что это лучший способ сделать это.