代码之家  ›  专栏  ›  技术社区  ›  Thomas

基于状态而非道具的造型

  •  0
  • Thomas  · 技术社区  · 8 年前

    我想根据组件的状态(而不是道具)设置组件的样式,该状态会随着单击而改变。

    然而,如果不将状态向上拉到包装器中,并将状态向下传递给道具,我看不到任何方法可以做到这一点。这似乎是不必要的。样式化组件有一种访问方式吗?

    我想这样做:

    const styledDiv = styled.div`
      background-color: ${(state) => state.x};
    `
    
    2 回复  |  直到 8 年前
        1
  •  1
  •   Thomas    8 年前

    该库开发人员推荐的解决方案是将状态向上拉。我不得不同意。

        2
  •  0
  •   Chance Smith    8 年前

    最好的方法是将状态作为道具传递到样式化组件中。就像这样。。。

    JS

    return (
      <div>
        <StyledDiv customPropName={this.state.x}>example text</StyledDiv>
      </div>
    );
    

    样式化组件

    const StyledDiv = styled.div`
      background-color: ${(props) => props.x};
    `