React Native: Как изменять дочерние компоненты?

К примеру у меня есть компонент <Icon.Home set='light' primaryColor='#fff' size={22} />. Могу ли я обращаться к другим дочерним компонентам и подставлять в него другие пропсы (<Icon.<Другой компонент> set='<мое свойство>' primaryColor='<мой цвет>' />)?

Чтоб было понятнее, о чем именно идет речь, привожу часть кода, где мне это требуется:

{state.routes.map((route, index) => {
    const isFocused = state.index === index;
    const onPress = () => {
        const event = navigation.emit({
            type: 'tabPress',
            target: route.key,
            canPreventDefault: true,
        });

        if (!isFocused && !event.defaultPrevented) {
            // The `merge: true` option makes sure that the params inside the tab screen are preserved
            navigation.navigate({ name: route.name, merge: true });
        }
    };

    const color = isFocused ? '#fff' : '#222';

    return (
        <TouchableWithoutFeedback onPress={onPress}>
            <Icon.{tabIcon[index]} set='light' primaryColor={color} />
        </TouchableWithoutFeedback>
    );
})}

Возможно вопрос в каких-то местах не особо корректный т.к. только учусь, но думаю суть вопроса передал.


Ответы (1 шт):

Автор решения: Eugene X

Дочерние компоненты не могут влиять на верхние компоненты, никаким способом кроме как вызвать callback useCallback или использовать общий reducer useReducer

https://ru.reactjs.org/docs/hooks-reference.html

Добавлено спустя...

Вот рабочий пример работы общего reducer'а

https://codepen.io/latdev/pen/poWJQjK

Второй вариант предпочтительнее, так как редюсер эта такая собака, которая лает всем компонентам подписанным на неё. Ты заранее в неё прописываешь в case в виде action.type методы типо 'сидеть', 'лежать', 'лаять'.. И передаёшь дополнительные параметры в то-же объекте, и как только ты вызвал dispatch({type: "лаять", mode: "Громко"}) все компоненты что подписаны, услышат громкий лай.

→ Ссылка