我对此的react 是新的.我正在try 将一个用VanillaJS编写的外部库集成到我的Reaction应用程序中.外部库在其代码的一部分中设置window.addEventListener()
,并异步地对某个对象进行更新/改变.
如果我将state
对象从我的Reaction应用程序传递给这个外部方法,我可以观察到当某个相关事件发生时,状态对象会发生变化.例如,如果我等待几毫秒,然后将状态打印到Reaction应用程序的控制台上,我就可以看到这一点.现在,状态不同了,但组件似乎没有重新渲染.
const myObj = { "counter": 0 }
const [state, SetState] = useState(myObj);
useEffect(() => {
// console.log(state); -> { "counter": 0 }
externalLibraryEventListener(state); // externalLibraryEventListener increments myObj["counter"] by 1 asynchronously.
// setTimeout(() => {console.log(state)}, 2000) -> { "counter": 1 }
}
), [state];
在我的研究中,到目前为止,我已经读到过关于对数据的浅层和深层副本进行不同解释以及不同react 的react .我不确定这是不是正在发生的事情,但也许这是正确的道路.我的另一个预感是,它不会重新呈现组件,因为没有任何前端更改(如鼠标单击或表单填充)来更改状态;从Reaction应用程序的Angular 来看,状态对象似乎正在内存中更改.
最后,我希望将一些对象从我的Reaction应用程序传递给VanillaJS代码,监听状态的变化,然后在有这种变化的情况下让我的Reaction应用程序响应.也许这是不可能的react ,在try 了许多小时后,我想我应该在这里问一下.在提出解决方案时,在我的情况下,最好是在不更改VanillaJS代码的情况下处理来自Reaction应用程序端的一切.