javascript - 警告:道具“数据回调”的值无效标签。从元素中删除它,或者传递一个字符串或数字值以将其保留在 DOM 中
问题描述
在倒数第二个 div 标记中,id = "g_id_onload"
如果我将函数分配给属性data-callback
,react 会发出警告:
data-callback
警告: div 标签上的 prop 值无效。从元素中删除它,或者传递一个字符串或数字值以将其保留在 DOM 中
也data-callback
永远不会被调用。有谁知道这有什么问题。
class Login extends React.Component{
handleCredentialResponse = (response)=>{
console.log(response.credentials);
}
render(){
return (
<div className="login">
<div className="text-center mb-2">
<img src="http://placehold.it/60" alt="Sign in"/>
</div>
<form>
<div className="text-center h3 mb-3">Sign in</div>
<div className="mb-3">
<label className="form-label">Email address</label>
<input type="email" className="form-control" />
</div>
<div className="mb-3">
<label className="form-label">Password</label>
<input type="password" className="form-control"/>
</div>
<div className="text-center mb-3">
<button type="submit" className="btn btn-primary">Sign in</button>
</div>
</form>
<div className="mb-3 text-center form-text div_or">Or</div>
<div className="google_signin_row">
<div className="google_signin_col">
<div id="g_id_onload"
data-client_id="CLIENT_ID"
data-callback={(res)=>this.handleCredentialResponse(res)}>
</div>
<div className="g_id_signin" data-type="standard" data-theme="filled_blue" data-width="250"></div>
</div>
</div>
</div>
);
}
}
解决方案
在这里找到解决方案:https ://github.com/google/recaptcha/issues/74
概括:
data-callback 属性需要一个字符串,该字符串定义应触发的全局命名空间中的函数名称。您不能在属性中定义函数。
所以在全局命名空间中定义函数handleCredentialResponse
并放置data-callback = "handleCredentialResponse"
工作。
替代方式:
class Login extends React.Component{
constructor(props) {
super(props);
window.handleCredentialResponse = this.handleCredentialResponse;
}
handleCredentialResponse(response){
console.log(response);
}
render(){
return <div className="g_id_onload"
data-callback="handleCredentialResponse"
/>
}
}
推荐阅读
- javascript - Hide a component using selected option in select2
- python - Youtube API returning 1 video per request or errors
- r - 从 ffdf 中的时间戳/日期时间列中分离时间和日期值
- java - Glide OnResource 设置回调类成员变量以便复用
- angular - angular 的 Apollo 客户端:从 graphql 文件生成代码
- html - Vertical overflow always showing scrollbar which never works
- android - 例外:预打包的数据库具有无效的架构
- javascript - 未捕获的错误:无法处理绑定“foreach”(淘汰 js)
- windows - How to replace all fields with trim(field_name) for all string automatically in notepad++
- android - 我可以访问在运行时创建的 Android toast XML 吗?