【问题标题】:Is it OK to manually change a ReactJS component's key?手动更改 ReactJS 组件的键可以吗?
【发布时间】:2015-01-10 21:36:22
【问题描述】:

我在一个项目中使用uncontrolled form input components,有时我需要清除一个输入/一组输入的值。我发现一种简单的方法是手动更新组件的key 属性。

它有效,但这是不好的做法吗?手动更改密钥时是否应该担心性能/内存问题?

【问题讨论】:

    标签: reactjs


    【解决方案1】:

    React 在与虚拟 DOM 进行 diff 时使用键来查找“相同”元素。更改密钥是有效的,因为它会欺骗 React 将您的输入视为一个新元素。在很大程度上,这会影响你的性能,因为 React 将创建和销毁 DOM 元素,而不是仅仅改变改变的属性。在小范围内,您可能不会看到任何明显的性能影响。

    如果您要清除该值,在我看来,您的手上可能并没有真正不受控制的输入。毕竟,在某种程度上,你是在“控制”它。但是,如果这是您触摸输入值的唯一原因,我可以理解为什么让它“不受控制”会很有吸引力。我没有对此进行测试,但我认为您应该能够通过为元素提供 ref 并以这种方式访问​​ DOM 元素,以编程方式将值设置为空字符串......我的假设是,由于它是不受控制的,React 不会'diffing/rendering时不要注意value属性。

    【讨论】:

    • 我明白你的意思,它并不是一个不受控制的组件,是的,我可能会使用 ref 加上 getDOMNode() 来更新输入的值 - 更改起来要容易得多关键:) 我可能应该改用受控组件。感谢您的意见!
    猜你喜欢
    • 2019-02-20
    • 1970-01-01
    • 2014-01-21
    • 1970-01-01
    • 1970-01-01
    • 2021-03-31
    • 2018-12-04
    • 2015-11-09
    • 1970-01-01
    相关资源
    最近更新 更多