用动态内容反应状态

时间:2018-09-27 09:20:43

标签: reactjs content-management-system state

我正在基于React构建CMS。有几次,我遇到了我在一个页面上遇到的问题,用户可以在该页面上添加和删除内容。此内容本身具有可以更改的属性。我对应该在哪里保留所有这些属性的状态感到非常困惑。

例如:我有一个类似博客的页面,用户可以在其中添加和删除短消息更新。每个新闻更新都有一个private static bool AreOverlapped(Rectangle left, Rectangle right) { //TODO: put relevant code here } ... Rectangle boxRect = new Rectangle( pbArray[x,y].Parent.PointToScreen(pbArray[x,y].Location), pbArray[x,y].Size); bool hasOverlappedLabel = this .Controls // <- Labels that are directly on the form only .OfType<Label>() .Select(lbl => new Rectangle( lbl.Parent.PointToScreen(lbl.Location), lbl.Size )) .Any(rect => AreOverlapped(rect, boxRect)); title和其他一些属性,例如content

我所看到的所有状态都可以由category组件(包含所有帖子)拥有,或者BlogEditor仅知道BlogEditor的帖子和帖子本身拥有其内容的状态(并与API通信)。 React的最佳实践是什么?

1 个答案:

答案 0 :(得分:1)

这将取决于个人喜好,因此本质上没有“最佳实践”。很难在上下文很少的情况下进行呼叫,但是我一直发现不必要地将数据从父级传递到子级很烦人,通常最好与“ BlogEditor一起使用,只知道帖子和帖子的ID”自己拥有其内容的状态(并与API通信)。

但是,如果这意味着您要制作例如。来自10个子组件的每个组件有10个API请求,而不是来自父组件的1个API请求,那么您可能想选择1个API请求。

因此,答案是“根据情况拨打电话,没有明确的答案”。