每当我尝试className='fa-spin'
在React中使用FontAwesome微调器图标(带有)时,都会出现以下错误:
Uncaught DOMException: Failed to execute 'removeChild' on 'Node': The node to be removed is not a child of this node.
at removeChild (http://localhost:5000/public/bundle.js:19553:22)
at unmountHostComponents (http://localhost:5000/public/bundle.js:13683:11)
at commitDeletion (http://localhost:5000/public/bundle.js:13727:5)
at commitAllHostEffects (http://localhost:5000/public/bundle.js:14419:13)
at HTMLUnknownElement.callCallback (http://localhost:5000/public/bundle.js:5035:14)
at Object.invokeGuardedCallbackDev (http://localhost:5000/public/bundle.js:5074:16)
at invokeGuardedCallback (http://localhost:5000/public/bundle.js:4931:27)
at commitRoot (http://localhost:5000/public/bundle.js:14508:9)
at performWorkOnRoot (http://localhost:5000/public/bundle.js:15510:42)
at performWork (http://localhost:5000/public/bundle.js:15460:7)
编辑: 问题已经出现了好几次了,并且代码本身真的没有什么特别的。我一直使用微调器作为加载图标,并且每当用内容替换微调器时都会发生错误。例:
return (
<div>
{this.state.loading === true ? <i className="fa-spin fas fa-sync"></i> : (
this.state.recipes.length === 0 ? (
<div className='text-center'>
<h2>There doesn't seem to be anything here...</h2><br />
<h2 style={buttonStyle}>Get started by </h2><button style={buttonStyle} className='btn btn-md btn-success' onClick={(e) => this.props.setView(e, 'browserecipes')}>browsing existing recipes</button><h2 style={buttonStyle}> or </h2><button style={buttonStyle} className='btn btn-success btn-md' onClick={(e) => this.props.setView(e, 'addrecipe')}>adding a recipe.</button>
</div>
) : (
<div>
<h1 className='text-center title'>My Recipe Cloud</h1>
<RecipeContainer
recipes={this.state.recipes}
user={this.state.user}
tags={this.props.tags}
setView={this.props.setView}
changeUser={this.changeUser}
/>
</div>
)
)}
</div>
)
我想我知道为什么会这样。看来这与FontAwesome
5用<i>
标签替换标签的方式有关<svg>
。我相信这与React处理从DOM中删除元素的方式不兼容。参见:https : //fontawesome.com/how-to-use/svg-with-
js#with-jquery
该文档的底部列出了我使用的解决方法,该方法包括:
<script>
FontAwesomeConfig = { autoReplaceSvg: 'nest' }
</script>
我将其包含在标题中,可能会有更好的放置位置,但是它似乎至少可以解决我的问题。这可能会影响您对专门针对FontAwesome元素的任何类的某些CSS逻辑,这些元素是其他类/
id的直接子元素,因此您可能只需要检查以确保所有样式看起来正确即可,因为它现在正在嵌套在<svg>
该范围内标签<i>
的标签,而不是取代它。
另外,您也可以<i>
自己包装标签。例如:
{this.state.loading === true ? <div><i className="fa-spin fas fa-sync"></i></div> ...
应该管用。
更新(12/10/18):现在在文档中有一个更好的解释,说明为什么在官方文档中会发生这种情况,并在此处解释了如何将此FontAwesome与javascript库集成。<i>
现在,在脚本标签内部完成了自动嵌套标签的方法,以获取FontAwesome
javascript库<script src="https://use.fontawesome.com/releases/v5.5.0/js/all.js" data-auto-replace- svg="nest"></script>
。现在,FontAwesome
React库也获得了官方支持,该库也解决了此问题。
问题内容: 我看过类似的帖子,但找不到答案,就我而言,我正试图通过以下方式采取行动: 到路线在那里我渲染组件 链接已呈现,但是当我单击它时,控制台出现错误: 为什么会这样,这里的解决方法是什么? 我更新的代码: Index.js中的路由: App.js: 问题答案: 首先 ,为您的函数添加一些默认值: 然后 使用: 或 尝试以下 方法 ( 更好的方法 ): 在next()组件中,使用传递的值,如下
当用户按下ctrl键时,我试图在Chrome中保存HTML文件,但Chrome崩溃了。 (我只想下载HTML文件的源代码) 我读到它发生是因为我的文件比1.99M大... 在第一次尝试中(在我知道Chrome崩溃之前): 第二次尝试,在我读到崩溃后,我使用了: 这里我得到了错误: 我不知道,但我读到我需要将我的字符串编码为base 64:如何在JavaScript中将字符串编码为Base64? 有
这是我的密码 我想执行滚动,但在屏幕上它没有执行任何操作。这是android设备的屏幕截图 以下是Appium服务器日志: 信息:[调试][引导][调试]已注册的崩溃监视程序。信息:[debug][BOOTSTRAP][debug]客户端连接信息:[debug][BOOTSTRAP][debug]从客户端获取数据:{“cmd”:“action”,“action”:“wake”,“params”:{
问题内容: 我正试图让nvidia-docker在我的centos7系统上运行: 到目前为止,一切都很好: 现在,让我们尝试使用nvidia运行时: 但是奇怪的是 问题答案: 所以…最后,我完全禁用了selinux并重新启动,并对其进行了修复。
无法对代理执行签出:“”C:\Program Files\git\bin\git.exe“-C Core.askpass=C:\TeamCity\BuildAgent\Temp\BuildTmp\Pass8517307457314531623.bat-C Credential.helper=-C Credential.helper=C:/TeamCity/Buildagent/Temp/Build
问题内容: 我试图通过ajax jQuery的方法从跨域服务器检索XML,并且控制台上出现以下错误消息: 导致此错误的代码是: 问题答案: 问题是同步选项由以下方式指定: 这似乎在Chrome中不起作用,可能是由于jQuery的ajax方法的规范,该规范说: 跨域请求和dataType:“ jsonp”请求不支持同步操作。 奇怪的是,Firefox和Internet Explorer似乎忽略了该规