如何解决警告:阵营不承认一个DOM元素的X道具
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何解决警告:阵营不承认一个DOM元素的X道具相关的知识,希望对你有一定的参考价值。
我使用了一个名为react-firebase-js处理火力权威性的事情,但我的理解,反应和提供者的消费理念是有限的。
我开始与一个内置一个非常大的JSX事情都在顶层,而且工作没有警告。但是,当我试图把它分解成组成部分,我在标题和其他一些所示的警告。
这工作没有任何警告...
// in App.js component
render() {
return (
<header className="App-header">
<img src={logo} className="App-logo" alt="logo" />
<FirebaseAuthConsumer>
{({ isSignedIn, user, providerId }) => {
if (isSignedIn) {
return (
// ui for signed in user
);
} else {
if (this.state.confirmationResult) {
return (
// ui to get a phone number sign in
);
} else {
return (
// ui to verify sms code that was sent
);
}
}
}}
</FirebaseAuthConsumer>
</header>
);
}
但对此,更好的设计,我认为,产生错误/警告...
// in App.js component
render() {
return (
<MuiThemeProvider>
<FirebaseAuthProvider {...config} firebase={firebase}>
<div className="App">
<IfFirebaseAuthed>
<p>You're authed buddy</p>
<RaisedButton label="Sign Out" onClick={this.signOutClick} />
</IfFirebaseAuthed>
<IfFirebaseUnAuthed>
<Authenticater /> // <-- this is the new component
</IfFirebaseUnAuthed>
</div>
</FirebaseAuthProvider>
</MuiThemeProvider>
);
}
// in my brand new Authenticator component...
render() {
return (
<header className="App-header">
<img src={logo} className="App-logo" alt="logo" />
<FirebaseAuthConsumer>
{({ isSignedIn, user, providerId }) => {
if (isSignedIn) {
return (
<div>
<pre style={{ height: 300, overflow: "auto" }}>
{JSON.stringify({ isSignedIn, user, providerId }, null, 2)}
</pre>
</div>
);
} else {
if (this.state.confirmationResult) {
return (
// ui to get a phone number sign in
);
} else {
return (
// ui to verify an sms code that was sent
);
}
}
}}
</FirebaseAuthConsumer>
</header>
);
}
错误/警告这个样子......
[错误]警告:阵营不能识别DOM元素上
isSignedIn
道具。如果您有意它出现在DOM为自定义属性,拼写为小写issignedin
代替。如果你不小心从父组件通过了它,从DOM元素删除。[错误]警告:阵营不能识别DOM元素上
providerId
道具。如果您有意它出现在DOM为自定义属性,拼写为小写providerid
代替。如果你不小心从父组件通过了它,从DOM元素删除。[错误]错误:无法加载外部reCAPTCHA的依赖! (匿名功能)(0.chunk.js:1216)[错误]错误:你提供的错误不包含堆栈跟踪。
我误解了如何使用提供者的消费者,或者是有错误的反应,火力代码,还是我做一些其他东西错了吗?谢谢。
据推测,这条线一定是罪魁祸首:
<FirebaseAuthProvider {...config} firebase={firebase}>
你config
对象目前持有isSignedIn
和providerId
领域,你必须在发送这些到子组件,并最终以一个DOM元素。尝试从对象上去除这些领域你给他们下来之前:
const { providerId, isSignedIn, ...authProviderConfig } = config
这样一来,你的对象authProviderConfig
将不会保留providerId
或isSignedIn
属性。
更妙的是,你可以明确地重建配置对象,以避免任何进一步的混乱:
const authProviderConfig = { /* The fields from config FirebaseAuthProvider actually needs */ }
您也应该检查你的FirebaseAuthProvider
组件,看看它是如何使用这些道具,避免蔓延下来,DOM元素。
相关文档:https://reactjs.org/warnings/unknown-prop.html
以上是关于如何解决警告:阵营不承认一个DOM元素的X道具的主要内容,如果未能解决你的问题,请参考以下文章
react-dom.development.js?61bb:530 警告:道具类名不匹配
react-select:如何解决“警告:道具`id`不匹配”
如何在不将道具传递给底层 DOM 元素的情况下扩展样式组件?
Next.Js 带有样式组件的 React 应用程序。警告:道具 `className` 不匹配。服务器:“x” 客户端:“y”
如何修复“警告:未知道具`change-background`,<div>标签上的`colorcode`。从元素中删除这些道具”错误?