javascript - ReactJS:无状态组件中的有状态子级

标签 javascript reactjs children

在无状态组件中拥有有状态子组件是否会使组件不再无状态?

最佳答案

简短回答

不,事实并非如此。


与具有状态的组件关联的生命周期方法应该独立于它们在组件层次结构中的位置工作,否则事情会以不可预测的方式中断。

这里证明无状态组件具有类的支持实例,因此它们可以使用 ref 和生命周期方法:

class StatefulComponent extends React.Component {
  componentDidMount() {
    this.wrapper.classList.add("highlight");
  }
  
  render() {
    return (
      <div ref={ref => this.wrapper = ref}>
        Stateful (red outline due to class being added)
        {this.props.children}
      </div>
    );
  }
}

const StatelessComponent = props => (
  <div>
    Stateless (black outline)
    {props.children}
  </div>
);

ReactDOM.render(
  <StatefulComponent>
    <StatelessComponent>
      <StatefulComponent />
    </StatelessComponent>
  </StatefulComponent>, document.getElementById("app"));
div {
  padding: 20px;
  outline: 1px solid;
}

.highlight {
  outline-color: red;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="app"></div>

关于javascript - ReactJS:无状态组件中的有状态子级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47911965/

相关文章:

javascript - D3 v4 中的 d3.rebind

Javascript:模拟点击 &lt;input type ="file">

javascript - OnClick 按钮从数据库获取并实时显示在输入字段上

javascript - 如何从任何组件外部调用 React 的 setState 函数(如实用程序函数)?

reactjs - 更新用户信息 sequelize express

javascript - 如何创建指令来远程验证表单?

javascript - 如何通过 HOC 添加 onMouseDown 监听器

javascript - jQuery - UI Resizable 调整所有子元素及其字体大小

javascript - 子节点无法在 Internet Explorer 中工作?

reactjs - 对 child 使用 “React.ReactNode”类型时出错。我应该使用哪种类型?