首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在ReactJS中继承nodeJs请求对象的推荐方法

问在ReactJS中继承nodeJs请求对象的推荐方法
EN

Stack Overflow用户
提问于 2017-02-08 11:47:15
回答 1查看 207关注 0票数 1

继承复杂对象或类到每个ReactJS组件的最佳方法是什么?

正如他们的文档中所描述的,不建议使用上下文,我想使用这个支柱也不是最好的解决方案。

这就是我们的情况:

编辑:也许一个更好的例子是,由于SSR的原因,我们试图将请求对象从路由器继承到子级的第20层。

我们正在使用一个路由器,它工作在客户端,也适用于SSR。对于每个呈现的路由,我们需要在客户机和服务器上使用生成的类。因此,有一个解决方案应该如下所示:

代码语言:javascript
复制
class MyComponent extends React.Component {
  constructor(props) {
    super(props);
    this.myAwesomeObject = new AwesomeClass({/* some settings */});
  }
  getChildContext() {
    let { myAwesomeObject } = this;
    return {
      myAwesomeObject
    };
  }
  render(){
    return (
      <span><ComponentLevel1 /></span>
    );
  }
}

const ComponentLevel1 = () => {
  return (
    <div>
      <ComponentLevel2 />
    </div>
  );
};
const ComponentLevel2 = () => {
  return (
    <div>
      <ComponentLevel3 />
    </div>
  );
};
......
const ComponentLevel20 = (props) => {
  content = this.context.myAwesomeObject.doSomeThingWithProps(props);
  return (
    <div>
      {content}
    </div>
  );
};

在这个例子中,我现在能够在我将要呈现的每个组件中使用awesomeObject,但是ReactJS:https://facebook.github.io/react/docs/context.html并不推荐上下文。

因此,我现在的问题是:向所有组件继承这样的类的最佳推荐方法是什么?

我知道:在客户机上,这不是问题,因为我可以创建对象一次并在客户端全局上使用它,但是在服务器(SSR)上,我还需要访问创建的类。而且每次我需要在另一个组件中重新创建对象时,似乎都不是最好的解决方案--也不要将这个类作为属性添加到任何组件中--对吗?

编辑--我已经编辑了代码片段,以表明它可能存在这样一种情况,即我的第20层子级需要访问实例。对于上下文,它将像我的例子一样工作,但是ReactJS说它不推荐。因此,另一个解决方案是将类添加到我的孩子的属性中--降低了20个级别--但这真的是解决这个问题的最佳推荐解决方案吗?

EN

回答 1

Stack Overflow用户

发布于 2017-02-08 12:37:45

作文呢?(https://facebook.github.io/react/docs/composition-vs-inheritance.html)

代码语言:javascript
复制
class SomeComponent extends React.Component {
    render() {
        return(
            <SomeOtherComponent {...this.props} />
        )
    }
}

通过将所有道具向下传递到不同的组件(包括它的子组件),您可以轻松地自定义子组件行为。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42112261

复制
相关文章

相似问题

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