当前位置: 首页 > 知识库问答 >
问题:

反应成分组成但令人困惑

陈龙野
2023-03-14

我这里有一个代码片段,基本上展示了Dan提到的想法,即提升react中的内容,以自然地提高性能并编写更简洁的代码。在InputField组件中,按钮总是呈现,这不是我想要的行为,它应该跳过呈现按钮组件。所以它应该做的是跳过渲染,因为按钮是inputfield的子道具,如果子道具没有改变,react将跳过渲染。

Dan解释的类似概念示例:“当颜色改变时,ColorPicker重新渲染。但它仍然有上次从应用程序获得的相同子属性,因此React不会访问该子树”

所以我在这里很困惑,是不是多个子道具的问题,因为InputField有value,onChange,子道具,其中一个改变,react决定更新其他的?我这里有一个例子,可以证明这不是多道具的问题。

编辑:后续问题,在现实世界中,顶级组件必须具有各种用途状态,状态更新等,这是否意味着“提升内容”(组件组成)在现实世界中不切实际?只是从节省一些渲染计算能力的角度来看。(我们知道它还有其他好处,比如帮助一些螺旋钻探)是否有任何现实世界的实现,代码示例??

共有1个答案

祖新觉
2023-03-14

感谢@Jacob Smit的评论。解决了我的问题。My Button组件在组件结构中仍然处于较低的位置,“提升内容”的方式是在代码中提升内容(组件),这样当您在较低的组件中设置State()时,它不会影响该组件的内容。因此下部组件保留了必须传递的道具。在这里,正如Jacob所说,我的setState()将触发Button和InputField的重新呈现,因此将呈现Button。

 类似资料:
  • 这是一个练习2D数组的练习,显然我在理解它们方面失败了。输入是创建一个方法,该方法在数组[][]中查找最大的沙漏形整数数。数组的大小总是6x6,因此循环是x<4和y<4,整数值也是从-9到9,这就是为什么我的结果变量以-256开始(如果我以0开始,充满负值的数组将不起作用) 样本输入 即产生输出的沙漏形状 然后在main中使用我的biggestHourglass()方法。 我的结果不符合预期,我不

  • 我被一些行为弄糊涂了,不知道是否有人能帮忙。我有一个React组件,它根据通过道具传入的过滤器获取电影数据。使用控制台。日志我可以看到我的componentDidMount()只被调用一次,但是每次由于接收到不同的道具而重新呈现组件时,仅在componentDidMount()中设置的状态变量都会更改。我的代码很长,所以我不想全部发布,但如果需要,我可以发布。下面是引起我困惑的片段: 尽管如此。过

  • 问题内容: 有人可以向我解释一下吗: 我从不理解,我认真地认为,如果有人不尝试向我深入解释,我永远也不会。这整个上下文使我感到困惑。有时它是这样的: 有时它不会那样工作,但只接受: 有时是: 等等等等等。 我了解上下文的基础,但是有几项?为什么日食会一次又一次地向我抛出错误呢?为什么有时需要声明上下文?: 我无法在所有情况下都找到合适的环境,我怎么知道在每种情况下都合适的环境? 问题答案: 首先,

  • 问题内容: 我总是将If语句(在C#中)用作(1.替代); 我知道没有必要将“ == true”写为(2.替代)); 但是,我使用它是因为它更具可读性,并且不会引起性能问题。当然,这是我的选择,而且我知道许多软件开发人员都喜欢第一种选择。最佳用法是什么,为什么? 问题答案: 如果布尔值的名称清楚地说明了它的含义,那么我将始终选择版本2。但是,有时您会陷入一个特别晦涩的变量名,至少不能更改它。现在就

  • 我希望类中的方法在IO线程上运行一些代码,但只有一次它们订阅的主题具有特定值。然后调用者应该在AndroidUI线程上得到响应。 像这样的东西: 这有用吗?不确定,所以我写了一组单元测试来检查它们。我发现我的测试方法,尽管它们在一个接一个地运行时总是有效的,但作为套件的一部分会失败。 事实上,我发现如果我把同样的测试进行两次,第一次会通过,但第二次会失败! 为什么会这样?被测类中的bug是,还是测

  • 问题内容: 有没有办法将一个组件传递到另一个React组件?我想创建一个模型react组件,并传入另一个react组件以包含该内容。 编辑:这是一个reactJS codepen,说明了我正在尝试做的事情。http://codepen.io/aallbrig/pen/bEhjo 的HTML ReactJS 问题答案: 您可以用来渲染组件包含的任何子代: