React 姿势状态影响子组件姿势
React pose state affects child component poses
我正在尝试在 React 中创建一个组件,该组件会在需要时折叠和展开。为此,我正在使用反应姿势。但是,我在尝试嵌套多个此组件时遇到问题。
以下是我定义组件的方式:
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>
"pose" 似乎传递给了内部,这意味着当您扩展外部 div 时,内部也会扩展。里面的<CollapsableDiv>
好像对外面的影响不大。
这是问题的一个例子https://codesandbox.io/s/x7nljvom9z?fontsize=14
我是不是做错了什么?是不是不能重复使用同一个组件?
要在第二个 CollapsableDiv
上从其父集 withParent={false}
使其 "independent"。例如:
<CollapsableDiv
pose={this.state.showingInner ? "show" : "hide"}
withParent={false}
>
<div key="two">This is some inner content</div>
</CollapsableDiv>
我正在尝试在 React 中创建一个组件,该组件会在需要时折叠和展开。为此,我正在使用反应姿势。但是,我在尝试嵌套多个此组件时遇到问题。
以下是我定义组件的方式:
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>
"pose" 似乎传递给了内部,这意味着当您扩展外部 div 时,内部也会扩展。里面的<CollapsableDiv>
好像对外面的影响不大。
这是问题的一个例子https://codesandbox.io/s/x7nljvom9z?fontsize=14
我是不是做错了什么?是不是不能重复使用同一个组件?
要在第二个 CollapsableDiv
上从其父集 withParent={false}
使其 "independent"。例如:
<CollapsableDiv
pose={this.state.showingInner ? "show" : "hide"}
withParent={false}
>
<div key="two">This is some inner content</div>
</CollapsableDiv>