从react relay Container获取组件

时间:2015-10-25 08:55:14

标签: relayjs

如何从React Relay Container获取Component以获取静态变量?

从'./pages/home'导入主页;

console.log(Home.route)// undefined

我需要像Home.Component.route // object

这样的东西
[ ? ]  mysql

1 个答案:

答案 0 :(得分:3)

我认为没有办法在没有做以下任何一种情况下静态得到它。

备选方案1:添加包装组件的显式export

// In "Home.js":
export class HomeComponent extends React.Component {
  static route = {
    // ...
  }
}

export default Relay.createContainer(HomeComponent, {
  // ...
});

// In "Other.js":
import Home, {HomeComponent} from './Home.js';

console.log("should have access here", HomeComponent.route);

备选方案2:在导出

之前向容器添加属性
const HomeContainer = Relay.createContainer(
  // ...
);

HomeContainer.route = {
  // ...
};

export default HomeContainer;

备选3:在运行时通过引用访问

一旦安装了容器并且您有一个对它的引用,您可以通过“component”ref获取原始组件。请注意,这没有记录,因此不能保证将来可以使用。

// In "Other.js":
render() {
  return (
    <Home
      ref={
        container => (
          console.log(container.refs.component.route)
        )
      }
    />
  );
}

显然,这是三种替代方案中最讨厌的,所以我可能不会推荐它。

相关问题