我有一个Ad组件可以动态加载到电子商务应用程序的不同页面中。我希望能够知道在任何给定时间反应页面中存在多少个这些组件。
我想知道是否有一个反应模式来确定在任何给定时间页面中存在多少个组件实例。
我想您会在应用程序的根目录中执行此操作,并迭代react.children,Ad在组件出现时对它们进行计数。
有谁知道这种方法的最佳实践?
谢谢 :)
match({ routes, location, history: browserHistory }, (error, renderProps) => {
const requireComponents = (props) => props ? props.components.map((component) =>
component && component.requireComponent && store.dispatch(component.requireComponent())
) : [];
const render = () => {
store.initialRender = true;
ReactDOM.hydrate(
(
<AnalyticsProvider onEvent={analyticsHandler}>
<Provider store={store}>
<Router history={browserHistory}>{routes}</Router>
</Provider>
</AnalyticsProvider>
),
document.querySelector(".js-content")
);
store.initialRender = false;
};
Promise.all(requireComponents(renderProps))
.then(render)
.then(() => window.newrelic.addPageAction("FIT"));
});
Run Code Online (Sandbox Code Playgroud)
我尝试过 console.logging renderProps- 该对象中有一些路由,还有一个 getComponent 函数,但我还没有看到我正在寻找的结果。
我试图在PostgreSQL中实现一些非常简单的Rails方式.
假设你有一个User3列模型id,cached_segment,cached_step.假设您已经有一个复杂的查询,它可以计算segment并动态地query封装在一个范围内User.decorate_with_segment_and_step.这将返回一个ActiveRecord关系,User与之相同,但增加了3个列:
id cached_segment cached_step segment step cache_invalid
1 NULL NULL segment_1 step_1 TRUE
2 segment_1 step_2 segment_1 step_2 FALSE
3 ...
Run Code Online (Sandbox Code Playgroud)
我想生成的SQL是以下(PostgreSQL风格):
UPDATE users
SET cached_segment = segment_1
cached_step = step
FROM (#{User.decorate_with_segment_and_step.to_sql}) decorated_users
WHERE decorated_users.cache_invalid AND decorated_users.id = users.id
Run Code Online (Sandbox Code Playgroud)
理想情况下,我可以做类似的事情
User.
from(User.decorate_with_segment_and_step, 'decorated_users').
where(cache_invalid: true).
update_all('cached_segment = segment, cached_step = step')
Run Code Online (Sandbox Code Playgroud)
我对上面的语句没有好运update_all,根据源代码,只是from在构建update语句时丢弃该子句.
注意:我知道我可以使用User.connection.execute(my_raw_sql_here),这就是我现在正在做的事情.目标是坚持使用ActiveRecord.