首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >反应姿势状态会影响子组件姿势

反应姿势状态会影响子组件姿势
EN

Stack Overflow用户
提问于 2019-03-07 23:05:25
回答 1查看 112关注 0票数 0

我正在尝试在react中创建一个组件,它可以在需要时折叠和展开。为此,我使用了react-pose。然而,我在尝试嵌套多个此组件时遇到了问题。

下面是我如何定义我的组件:

代码语言:javascript
复制
const CollapsableDiv = posed.div({
  show: {
    height: 'auto',
    overflow: 'hidden'
  },
  hide: {
    height: '0px',
    overflow: 'hidden'
  }
});

这就是我使用它的地方。

代码语言:javascript
复制
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时,内部的div也会扩展。内部的<CollapsableDiv>似乎对外部的没有同样的影响。

下面是问题https://codesandbox.io/s/x7nljvom9z?fontsize=14的一个示例

我是不是做错了什么?不能重复使用相同的组件吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-07 23:32:47

为了使它“独立”于其父对象,在第二个CollapsableDiv上设置withParent={false}。例如:

代码语言:javascript
复制
<CollapsableDiv
  pose={this.state.showingInner ? "show" : "hide"}
  withParent={false}
>
  <div key="two">This is some inner content</div>
</CollapsableDiv>
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55046935

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档