javascript - 对象作为 React 子对象无效(找到:带有键 {children} 的对象)。如果您打算渲染一组孩子,请改用数组
问题描述
我在反应中使用上下文并且在使用它的道具时遇到问题。任何人都可以得到它的解决方案。这是我的代码和错误!!这是我的 useAuth.js 代码
const AuthContext = createContext();
export const AuthContextProvider = (props) => {
const auth = Auth();
return <AuthContext.Provider value={auth}>{props}</AuthContext.Provider>;
};
export const useAuth = () => useContext(AuthContext);
const Auth = () => {
const [user, setUser] = useState(null);
const provider = new firebase.auth.GoogleAuthProvider();
const signInWithGoogle = () => {
return firebase
.auth()
.signInWithPopup(provider)
.then((res) => {
const signedInUser = getUser(res.user);
setUser(signedInUser);
localStorage.setItem("hot-onion-user", true);
return res.user;
})
.catch((err) => {
console.log(err);
setUser(null);
return err.message;
});
};
这就是我使用上下文的地方
<AuthContextProvider>
<div className="App">
<Router>
<Header></Header>
<Switch>
<Route path="/login">
<Login />
</Route>
<Route path="/signup">
<Signup />
</Route>
<Route path="*">
<NoMatch></NoMatch>
</Route>
</Switch>
</Router>
</div>
</AuthContextProvider>
错误消息是“错误:对象作为 React 子项无效(找到:带有键 {children} 的对象)。如果您打算呈现子项集合,请改用数组。”
解决方案
问题出在这一行:
return <AuthContext.Provider value={auth}>{props}</AuthContext.Provider>;
而不是props
,您需要放置props.children
,因为这是提供程序中的内容。
推荐阅读
- kubernetes - 具有一个 Job manager 的单个 Flink Cluster 中的理想任务管理器数量
- python - 当我更改 python pandas 数据框中的索引时,matplotlib 图表发生了变化
- php - Symfony 表单提交后提交填充实体类型
- string - 如何将制表符分隔的数据(始终以字母开头)合并为一个字符串?
- javascript - 为什么 react render 接受一个块而 return 不接受?
- sparql - 如何列出自定义 Wikibase 实例上的所有属性
- moodle - 根据用户角色创建 CSS 类
- java - java中的arraylist,打印出所有数据
- youtube-api - 使用 Youtube Data API 使我的视频在上传时成为私密视频
- c# - 输入字符串的格式不正确 - 传递 NULL 值时