Реакция состояния позы влияет на позы дочерних компонентов
Я пытаюсь создать компонент в реакции, который рушится и расширяется при необходимости. Для этого я использую реагирующую позу. Тем не менее, я сталкиваюсь с проблемами при попытке вложить несколько из этого компонента.
Вот как я определяю свой компонент:
const CollapsableDiv = posed.div({
show: {
height: 'auto',
overflow: 'hidden'
},
hide: {
height: '0px',
overflow: 'hidden'
}
});
И вот где я это использую.
class App extends React.Component {
state = {
showing: false,
showingInner: false
};
toggleShow = () => this.setState({
showing: !this.state.showing
});
toggleInner = () => this.setState({
showingInner: !this.state.showingInner
});
render() {
return (
<React.Fragment>
<button onClick={this.toggleShow}>
{this.state.showing?'Hide':'Show'}
</button>
<CollapsableDiv pose={ this.state.showing ? 'show' : 'hide' }>
<div>
This is some content
<button onClick={this.toggleInner}>
{this.state.showingInner ? 'Hide' : 'Show'}
</button>
<CollapsableDiv pose={this.state.showingInner ? 'show' : 'hide'}>
<div>
This is some inner content
</div>
</CollapsableDiv>
</div>
</CollapsableDiv>
</React.Fragment>
);
}
}
У меня проблема в том, что внешний <CollapsableDiv>
"Поза", кажется, передается внутреннему, что означает, что когда вы расширяете внешний div, внутренний также расширяется. Внутренний <CollapsableDiv>
похоже, не оказывает такого же влияния на внешнее.
Вот пример проблемы https://codesandbox.io/s/x7nljvom9z?fontsize=14
Я что-то здесь не так делаю? Разве нельзя повторно использовать один и тот же компонент?
1 ответ
Чтобы сделать его "независимым" от родительского набора withParent={false}
На втором CollapsableDiv
, Например:
<CollapsableDiv
pose={this.state.showingInner ? "show" : "hide"}
withParent={false}
>
<div key="two">This is some inner content</div>
</CollapsableDiv>