修改React

时间:2016-03-30 20:51:33

标签: javascript reactjs web-component custom-element

我在React中使用了custom element。我希望能够从React更改元素的属性。我还希望能够从元素本身内部更改相同的属性。不幸的是,当元素改变它自己的属性时,这会导致一些奇怪的副作用,我认为这些副作用与React的虚拟DOM没有意识到属性已经改变有关。

为了说明,假设我们有一个React渲染函数,它返回以下内容:

<my-component foo="bar"/>

my-component内部有逻辑,当点击该元素时,会将foo的值从bar更改为unicorn。到目前为止,一切都按预期工作。问题是在下一个渲染周期中,foo未设置回bar。我希望将 foo设置回bar

我的猜测是,React的虚拟DOM有bar作为缓存值(它没有意识到它已更改为unicorn),因此不会尝试将其设置回bar

  1. 我的理解是否正确?
  2. 如何制作,foo的值会在下一个渲染周期中重新设置为bar

1 个答案:

答案 0 :(得分:1)

你对虚拟DOM是正确的。为了使其行为符合您的需要,自定义元素需要以支持它的方式编写。

将此视为等同于controlling an <input>,您可以将处理程序绑定到输入react-native run-ios ,并调用onChange来阻止对vlaue的任何更改,或者将新值传递回event.preventDefault()以更新虚拟DOM。

因此,要使其工作,自定义元素需要支持类似的事件处理程序。