用UI状态反应哑组件

时间:2018-01-04 18:06:07

标签: reactjs

我想用React构建一个select输入组件。 select应该是哑组件,因为它只是一个UI组件, 但它也有它自己的状态(是否显示选项列表)

我应该如何管理这种状态?

return (
    const Select = (props) => {
        <div>
            <label>{placeholder}</label>
            {/*some toggle state*/ && <div>props.children</div>}
        </div>   
    }
)

谢谢!

3 个答案:

答案 0 :(得分:1)

你不应该因为“它只是一个UI组件”这一事实而感到困惑。任何具有内部状态的东西都应该是一个类。

您的代码,一个下拉列表,是我应该使用内部状态的示例。

使用setState()管理您的州。

答案 1 :(得分:0)

根据您的代码,您渲染的内容是stateless component,因此它不会有任何状态。

您可以做的是将state从父级传递到此组件,如下所示:

constructor(props) {
  this.state = { showDumbComponent:true }
}

render() {
  <DumbComponent show={this.state.showDumbComponent} />
}

答案 2 :(得分:0)

现在你的组件是无状态的,但你需要一个有状态的。

例如:

class Select extends React.Component {
  constructor(props) {
    super(props);
    this.state = {value: '', toggle: false};
  }

  render() {
    return (
       <div>
        <label>{placeholder}</label>
        {this.state.toggle && <div>this.props.children</div>}
       </div>   
    );
  }
}

您应该使用setState函数更改状态。

有关详细信息,请查看此article