如何解决反应不呈现UI中的所有元素
我正在开发一个使用Backbone,然后在一些Backbone视图中渲染React的应用程序(基本上是从Backbone缓慢过渡到React)。我遇到一个问题,在标题上有由Backbone控制的按钮,这些按钮会导致由React Elements构建的UI发生变化。由于多种内部原因,我们必须使用React15。问题是它在第一次访问该视图时起作用,但是如果我离开该视图转到另一个视图然后又回到同一视图,则单击按钮会使React变为渲染(很好),但添加的UI元素未在UI中的任何位置渲染。
-
导航到主干/反应视图
-
单击主干中的按钮
-
按钮发出事件
-
对事件进行监听
-
使用浏览器后退按钮退出视图
-
URL更改且主干加载了不同的视图
-
导航回主干/反应视图
-
单击主干中的按钮
-
按钮发出事件
-
对事件进行监听
我检查过的东西
- 看着React生成的对象,两种情况下确实都存在新的div
- 扫描的DOM,为div提供了一些独特的文本,它不在DOM中
我没有显示任何代码,因为可能有太多,我正在寻找想法,或者在什么条件下,即使React渲染返回对象中的该元素,React可能也无法在UI中添加某些元素渲染函数生成。或者,另一方面,我不确定这可能是骨干限制React的事情。
{$$typeof: Symbol(react.element),type: "div",key: null,ref: null,props: {…}, …}
任何探索的想法或途径将不胜感激!
解决方法
我解决了这个问题。某种程度上,即使render方法按预期返回了组件,reactDom仍决定不渲染模式。解决方法是将从ReactDom.render返回的React组件作为变量存储在主干中,然后在此处而不是在实际的React组件中操作其状态。
在骨干网中:
this.component = ReactDOM.render( ...)
然后按下按钮(由Backbone处理):
handleConfigure: function() {
this.component.setState({ 'showConfigModal': !this.component.state.showConfigModal });
},
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。