Извините за неоднозначное название.Трудно было объяснить проблему одним предложением.
Во-первых, моя структура кода выглядит следующим образом (с JSX)
<Parent>
<EditableText1 />
<EditableText2 />
</Parent>
Вот как я хочу, чтобы это работало:
В состоянии по умолчанию «показ» ET2 (EditableText2) равен «none»
Когда «Родитель» равен «Фокус», «отображение» ЕТ2значение становится «flex»
Когда «Parent» равен «Blur», значение «display» ET2 снова становится «none»
В другихслова, если выбран ET1 (ET1 видим), ET2 становится видимым, и ET2 можно редактировать в этом состоянии.
Вот как я пытался:
1)
<Parent
onFocus={() => { this.setState({ visible: 'flex' }) }}
onBlur={() => { this.setState({ visible: 'none' }) }>
<EditableText1 />
<EditableText2 className={css`
display: ${this.state.visible};
`/>
</Parent>
Проблема в следующем:
Когда ET1 становится «фокусом», появляется ET2.Однако, если я пытаюсь выбрать ET2, ET1 становится «размытым», поэтому «отображение» ET2 становится «нет».Поэтому я не могу выбрать ET2!
2) Поэтому я попытался предотвратить образование пузырьков, когда ET1 размыт:
<Parent
onFocus={() => { this.setState({ visible: 'flex' }) }}
onBlur={() => { this.setState({ visible: 'none' }) }>
<EditableText1
onBlur={(e) => { e.stopPropagation() }}
/>
<EditableText2 className={css`
display: ${this.state.visible};
`/>
</Parent>
Проблема в этом случае заключается в следующем:
Теперь возможно выбрать ET2 после фокусировки ET1.Но, если я размываю от ЕТ1 наружу от Родителя, «отображение» ЕТ2 не меняется на «нет».
Если я размываю снаружиРодитель из ET2, «display» меняется на «none» (так, как я хочу, чтобы оно работало).
Я не знаю, что делать дальше.Кажется, это из-за моего недостатка знаний.Кто-нибудь может дать мне путь или дать подсказку?