这个问题更多的是关于设计。在我的重型应用程序中,并希望实现通用突变和查询[/em>操作。我的第一个想法是实现一个函数,将所有查询或突变封装在一个地方。像这样:
function query(props) {
const Query = require('dynamic/query/based/on/props.path.gql');
const { data, loading, ...} = useQuery(Query, ...);
return { data, loading, ... };
}
然后使用
import Query form './query';
function SomeMainFunction(props) {
cont { data, loading, ...} = Query(props);
return data.map(...);
}
(突变类似(在我看来,即使使用React.memo
,这也会导致不必要的重新绘制。第二种方法是利用CCD_ 2。但在这种情况下,我真的不知道如何处理网络状态。意味着具有loading
、true
和false
。还是useQuery
会在数据到达后通过重新渲染组件来处理此问题?
当然,第三种解决方案是直接在功能/组件中实现此逻辑。因为代码分割,我不想要一些东西。
我最终使用了上述设计,并正确使用了memo
,它解决了我的问题。