Reactjs 通过React.render进行更新会产生奇怪的结果
我正在使用React编写一个web应用程序,由于UI框架的工作方式,我需要使用多个React组件安装到Html中的div中。要更新这些div,我再次调用React.render来更新不同的组件 这在我自己的机器上运行得非常好,但是一旦我在这个位置部署了一个最小化的版本,我就会有奇怪的行为 复制步骤:Reactjs 通过React.render进行更新会产生奇怪的结果,reactjs,Reactjs,我正在使用React编写一个web应用程序,由于UI框架的工作方式,我需要使用多个React组件安装到Html中的div中。要更新这些div,我再次调用React.render来更新不同的组件 这在我自己的机器上运行得非常好,但是一旦我在这个位置部署了一个最小化的版本,我就会有奇怪的行为 复制步骤: 导航到 点击汉堡菜单 在菜单中选择一项(打开练习集) 在底部按下“>”下一步按钮 应用程序似乎要重新加载 最初呈现的HTML为: 选择调用renderExercise()的“>”下一步按钮后,在新
renderExercise()
的“>”下一步按钮后,在新生成的div中似乎有一种对整个应用程序的“重新加载”:
新推出的部门为:
这个div包含整个呈现页面中的所有内容,比如标签中定义的标签
React将此视为不匹配的服务器端渲染,并出现以下错误:
警告:React试图重用容器中的标记,但校验和无效。这通常意味着您正在使用服务器呈现,并且在服务器上生成的标记不是客户机所期望的。React注入了新的标记以补偿其效果,但您已经失去了服务器呈现的许多好处。相反,请找出在客户端或服务器上生成的标记不同的原因:
(客户)我注意到你的定制JS被损坏了。在本地工作时,您是否也使用了损坏的代码?奇怪的是,我在“下一步”按钮上看到了对index.html的请求,但没有任何应该请求的内容!所有数据都已经在…@WalterRoman中,如果我运行与我在本地发布的文件集完全相同的文件集,经过修改、缩小,它就会工作。我没有看到其他web请求。如果我把它们放在其他地方,我会在按下“下一步”按钮时看到更多的web请求。我不知道。。。例如,托管在dropbox上:在您的github版本上,我看到三个JS错误,应用程序甚至没有启动。我注意到您的自定义JS已损坏,可能是重复的。在本地工作时,您是否也使用了损坏的代码?奇怪的是,我在“下一步”按钮上看到了对index.html的请求,但没有任何应该请求的内容!所有数据都已经在…@WalterRoman中,如果我运行与我在本地发布的文件集完全相同的文件集,经过修改、缩小,它就会工作。我没有看到其他web请求。如果我把它们放在其他地方,我会在按下“下一步”按钮时看到更多的web请求。我不知道。。。例如,托管在dropbox上:在您的github版本上,我看到三个JS错误,应用程序甚至没有启动。我注意到您的自定义JS已损坏,可能是重复的。在本地工作时,您是否也使用了损坏的代码?奇怪的是,我在“下一步”按钮上看到了对index.html的请求,但没有任何应该请求的内容!所有数据都已经在…@WalterRoman中,如果我运行与我在本地发布的文件集完全相同的文件集,经过修改、缩小,它就会工作。我没有看到其他web请求。如果我把它们放在其他地方,我会在按下“下一步”按钮时看到更多的web请求。我不知道。。。例如,托管在dropbox上:在您的github版本上,我看到三个JS错误,应用程序甚至没有启动。可能是重复的
function renderIndex(source) {
var context = { rootUri: source.substring(0, source.lastIndexOf( "/" )) };
$.get(source + "?v=" + Math.random().toString(), function (indexMarkdown) {
$.afui.hideMask();
var indexManager = new IndexManager(source, indexMarkdown, this.rootUri);
React.render(<Index key="index" indexManager={indexManager}/>, document.getElementById('mountIndexLeftMenu'));
}.bind(context));
}
function renderExercises(source) {
var context = { rootUri: source.substring(0, source.lastIndexOf( "/" )) };
$.get(source + "?v=" + Math.random().toString(), function (exercisesMarkdown) {
$.afui.hideMask();
var exerciseManager = new ExerciseManager(source, exercisesMarkdown, this.rootUri);
renderExercise(exerciseManager);
}.bind(context));
}
function renderExercise(exerciseManager) {
React.render(<ExercisesHeader key="exerciseHeader" exerciseManager={exerciseManager}/>, document.getElementById('mountAppHeader'));
React.render(<Exercises key="exercises" exerciseManager={exerciseManager}/>, document.getElementById('mountExercisesViewer'));
React.render(<ExercisesController key="exercisesController" exerciseManager={exerciseManager}/>, document.getElementById('mountExercisesController'));
}
renderIndex("https://raw.githack.com/wiki/svdoever/trainercoach/indexhotyoga.md");