【问题标题】:How to trigger Child re-rendering with dummy prop如何使用虚拟道具触发子重新渲染
【发布时间】:2018-03-11 08:56:59
【问题描述】:

我还没有找到有关如何执行此操作的文章,所以我想知道在我更改子对象在其父对象中使用的主要对象的情况下,但这种情况发生的方式是没有触发任何方法触发重新渲染的推荐方式是什么?

我的方法是只传递一个虚拟道具,它会引发“onComponentWillReceiveProps”方法的触发器,在该方法中我将传递的道具与道具进行比较,从而检测到发生了变化,最终将触发重新渲染组件(子组件)。

这并没有坏掉,也没有什么我只是想我把它拼凑在一起,想知道是否有一个干净的、推荐的、“反应方式”来解决这个问题。

谢谢

更新:我实际上认为这会起作用,但我的 hack 甚至不起作用。

【问题讨论】:

    标签: reactjs rerender


    【解决方案1】:

    您可以使用指定的生命周期方法shouldComponentUpdate,而不是将其侵入onComponentWillReceiveProps。在那里您可以查看您当前的道具、下一个要交付的道具并进行比较。

    【讨论】:

    • 很好的答案,但只是为了确保我们同意:在这种情况下,您仍然是说传递一个“虚拟”参数一个没有相关信息的参数(在我的情况下是一个新的 uuid)以便与shouldComponentUpdate 只是为了重新渲染而不是别的?
    • 或者你是说我实际上可以在孩子的父母的DOM标签中放:<Child shouldComponentUpdate={() => ()} />。然后我不需要改变孩子的任何东西,或者只是放那个方法,就是这样? (我应该指定我是初学者)
    • @tatsu 如果 UUID 发生变化,那么您可以将其与最新的道具进行比较并重新渲染。
    • 好吧,事实证明这也不起作用 x'D 我需要一个完整的父+子代码spinet才能理解
    • 这种方法感觉不对。 shouldComponentUpdate 的目的是允许优化,以防道具更改不需要重新渲染,您可以返回 false。默认情况下它将返回 true (如果它不存在),所以这可能就是您的尝试失败的原因。触发渲染最可靠的方法是设置状态,因此您应该弄清楚在哪里执行此操作。
    猜你喜欢
    • 2020-01-20
    • 2014-08-22
    • 2015-07-14
    • 2018-12-28
    • 2019-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-01
    相关资源
    最近更新 更多