在ReactJS中的兄弟姐妹之间共享状态(状态不在父级中)

时间:2019-08-14 11:17:41

标签: reactjs

我有3个组成部分:Parent,Child1和Child2。所有状态都在“子代2”中处理,因此无法移至“父代”(此刻需要大量工作)。我需要通过Child1的onClick更改状态。

这是有关大型应用程序的组成部分,该组件将很快进行重建,但目前尚无时间进行。

儿童状态2:

state = {
        selected: 0,
        type: '',
        showRootLayer: true,
        filters: {
            amount: { default: true, defaultText: 'Tutti', defaultValue: { start: 0, end: 100 }, text: '', value: '' },
            date: {
                default: true,
                defaultText: 'Week',
                defaultValue: { start: moment().subtract(1, 'week'), end: moment().subtract(1, 'day') },
                text: '',
                value: ''
            },
        }
    };

通过单击Child1上的按钮,我需要日期过滤器的文本字段从州变成“天”:

state = {
        selected: 0,
        type: '',
        showRootLayer: true,
        filters: {
            amount: { default: true, defaultText: 'Tutti', defaultValue: { start: 0, end: 100 }, text: '', value: '' },
            date: {
                default: true,
                defaultText: 'Week',
                defaultValue: { start: moment().subtract(1, 'week'), end: moment().subtract(1, 'day') },
     >>>>>>>    text: 'Day',
                value: ''
            },
        }
    };

1 个答案:

答案 0 :(得分:2)

反应只与data flowing down the component's tree有关。因此,水平沟通是反模式的,而且很难实现。如果您无法lift your state up,请考虑使用redux集中您的状态。有Context API,但我猜对您没有帮助,因为它还涉及将状态移至Provider