我有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: ''
},
}
};
答案 0 :(得分:2)
反应只与data flowing down the component's tree有关。因此,水平沟通是反模式的,而且很难实现。如果您无法lift your state up,请考虑使用redux
集中您的状态。有Context API
,但我猜对您没有帮助,因为它还涉及将状态移至Provider
。