可以在React中委托渲染吗?

时间:2016-07-12 20:36:33

标签: reactjs react-native

我想知道是否有任何理由避免这种模式:

https://gist.github.com/hnordt/ec4a8ebabc8013ed15107cd133a3766f

我认为React Native已经这样做,例如<ListView renderRow />

2 个答案:

答案 0 :(得分:1)

就个人而言,我会避免这样的app-flow,其中Component正在做那么多,比如获取和操作数据。

React的主要思想是(data) => (view) 一个函数(首选纯函数),它返回视图..

诸如获取数据,更改商店,处理身份验证之类的事情应该转移到单独的模块并运行某些操作。

这样你就可以独立于视图层了,所以你可以把你的api-stuff放到angular,backbone,jquery中,甚至可以在服务器上运行它。

我认为这样做没有任何好处,也许你可以为你的方法写一些独特的卖点,会很好。

答案 1 :(得分:0)

模式非常好。不是每个I / O场景都可能,但是对于您知道必须先加载之前进行渲染的资源的URL的情况。我甚至会改进它。

This parameter实际上看起来像无状态函数React组件。因此,将其定义移出渲染,并将其定义为(无状态)组件(作为函数)。

然后,应修改this line以使用每个组件,而不仅仅是函数。此外,我会延迟渲染到你的AJAX完成的那一刻。像这样:

  return this.props.renderComponent({ ...this.state, fetch: this.fetch })

- &GT;

  return this.state.fetching ? <div/> : <this.props.renderComponent {...this.state } fetch={ this.fetch } />;

删除try-catch。不需要 - 现在只有在数据就绪时才会安装组件,因此他们可以假设他们的数据同步,数据流是声明性的。这就是我们想要的,不是吗?

这种模式的巨大好处是什么,我认为没有任何合理的理由需要避免。